基本上是尝试创建ISNERT函数,它将编译insert并执行它
def Insert(self,tablename, **kwargs):
qms = []
for idx, item in enumerate(kwargs):
qms.append('%%s')
qmarks = ', '.join(qms)
res = []
res.extend(kwargs.keys())
res.extend(kwargs.values())
res = tuple(res)
QUERY = "INSERT INTO "+tablename+" (%s) VALUES (%s)" % (qmarks, qmarks)
self.dc.execute(QUERY, res)
self.db.commit()
返回给我:
psycopg2.errors.SyntaxError: syntax error at or near "%"
LINE 1: INSERT INTO users (%s, %s) VALUES (%s, %s)
qms数组已用字符串值“%s”填充。 然后,qmarks字符串等于“%s,%s”。 然后,将该值注入查询字符串两次,这样就可以“插入用户(%s,%s)值(%s,%s)”。 这里的问题是您用不正确的值填充了数组。 您需要插入表名和值,而不是%s
psycopg2的
execute()
函数只注入值,而不注入列,您需要传递真实的列名以进行查询:输出:
相关问题 更多 >
编程相关推荐