cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s' % m_k1,row[0])
我使用psycopg2
来执行此SQL语句。
m_k1
和row[0]
是我想要传递给语句的两个变量。
这会触发以下错误消息:
TypeError: not enough arguments for format string
我一直在网上寻找解决方案,但我无法修复它。
答案 0 :(得分:2)
将参数作为序列传递(而不是多个单独的值)。并使用parameters
参数而不是自己格式化sql。
cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s', [m_k1,row[0]])
# ^^^^^^^^^^^^^^^
答案 1 :(得分:2)
您需要将替换作为参数传递给execute
。现在你已经编写了两个占位符,但没有提供它们的值,而是在查询本身中解析它们。
cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s' , (m_k1,row[0],))