我必須使用以下運算式更新簡單表:
cur.executemany('UPDATE earths SET population=?, density=?, tilt=?, "land area"=?, dobe=?, livity=? WHERE sid=' str(dc['sid']) ' AND nr=' str(dc['nr']), v)
列印它得到的內容:
('UPDATE earths SET population=?, density=?, tilt=?, "land area"=?, dobe=?, livity=? WHERE sid=15821 AND nr=8',
['1360425627', '2.79', '17.33', '486857065.504', '17.88371', '0.08'])
我得到的錯誤是:
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 6, and there are 10 supplied.
我不知道程式如何從 6 個元素串列中看到 10 個值。有任何想法嗎?該表是好的 - 一個接一個地插入資料會給出好的值。它看起來
UPDATE earths SET population=1360425627, density=2.79, tilt=17.33, "land area"=486857065.504, dobe=17.88371, livity=0.08 WHERE sid=15821 AND nr=8
uj5u.com熱心網友回復:
如果您使用過,您的代碼會起作用execute(),也許這就是您想要做的,但是對于executemany()您應該使用元組的元組作為第二個引數,因為這是executemany(), 多次執行相同的陳述句并且每次提供一個不同的引數串列:
v = [('1360425627', '2.79', '17.33', '486857065.504', '17.88371', '0.08'),]
cur.executemany('UPDATE ...', v)
uj5u.com熱心網友回復:
executemany需要一個嵌套序列并解釋v[0]為要插入的第一個序列。
就好像你用過一樣execute(..., v[0])。
它說“提供了 10 個引數”,因為v[0]恰好是長度為 10 的字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446885.html
