擅长:python、mysql、java
<p>psycopg2的<code>execute()</code>函数只注入值<strong>,而不注入列,您需要传递真实的列名以进行查询:</p>
<pre><code>import psycopg2
import psycopg2.extras
class A():
def __init__(self):
self.dc = ...
self.db = ...
def Insert(self, tablename, **kwargs):
columns = []
valuePlaceholders = []
values = []
for column, value in kwargs.items():
columns.append(column)
valuePlaceholders.append('%%s')
values.append(value)
QUERY = "INSERT INTO " + tablename + " (%s) VALUES (%s)" % (', '.join(columns), ', '.join(valuePlaceholders))
print(self.db.mogrify(QUERY, values))
#self.db.execute(QUERY, values)
#self.db.commit()
a = A().Insert('foo', arg1="bar", arg2="test")
</code></pre>
<p>输出:</p>
<pre><code>b'INSERT INTO foo (arg1, arg2) VALUES (%s, %s)'
</code></pre>