带有变量的Python SQL语句,使用psycopg2库

时间:2014-02-08 05:03:30

标签: python database postgresql

 cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s' % m_k1,row[0])

我使用psycopg2来执行此SQL语句。 m_k1row[0]是我想要传递给语句的两个变量。

这会触发以下错误消息:

TypeError: not enough arguments for format string

我一直在网上寻找解决方案,但我无法修复它。

2 个答案:

答案 0 :(得分:2)

将参数作为序列传递(而不是多个单独的值)。并使用parameters参数而不是自己格式化sql。

cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s', [m_k1,row[0]])
#                                                            ^^^^^^^^^^^^^^^

请参阅Cursor.execute

答案 1 :(得分:2)

您需要将替换作为参数传递给execute。现在你已经编写了两个占位符,但没有提供它们的值,而是在查询本身中解析它们。

cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s' , (m_k1,row[0],))