2014-02-08 98 views
1
cur.execute('UPDATE newslib SET (keyword1) = %s WHERE id= %s' % m_k1,row[0]) 

我用psycopg2來執行這條SQL語句。 m_k1row[0]是我想要傳入聲明的兩個變量。Python變量SQL語句,使用psycopg2庫

這會觸發以下錯誤消息:

TypeError: not enough arguments for format string 

我一直在尋找解決方案的在線,但我不能修復它。

回答

2

您需要作爲參數傳遞換人execute。你現在編寫的方式已經指定了兩個佔位符,但沒有提供它們的值,而是在查詢本身中解析它們。

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

將參數作爲序列傳遞(而不是多個單獨的值)。並使用parameters參數而不是自己格式化sql。

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

Cursor.execute