【问题标题】:sqlite3.ProgrammingError: Incorrect number of bindings suppliedsqlite3.ProgrammingError:提供的绑定数量不正确
【发布时间】:2013-10-28 16:35:41
【问题描述】:

你能告诉我我在代码中做错了什么吗?

我试图搜索这个特殊案例,但找不到答案。我也尝试使用official docs on sqlite3 中的示例,但无法正常工作。基本上,我在inc_data 中有很多数据需要插入到 sqlite3 中。

import sqlite3

inc_data = [[u'Period Ending', u'Dec 31, 2012', u'Dec 31, 2011', u'Dec 31, 2010'],
            [u'Total Revenue\n', u'104,507,000\n', u'106,916,000\n', u'99,870,000\n'],
            ]


conn = sqlite3.connect("inc_data.db")
c = conn.cursor()
c.execute('''DROP TABLE inc_table''')

c.execute('''CREATE TABLE inc_table
             (item text, value1 text, value2 text, value3 text)''')

c.execute('INSERT INTO inc_table VALUES (?,?,?,?)', inc_data)

conn.commit()

conn.close()

错误信息:

c.execute('INSERT INTO inc_table VALUES (?,?,?,?)', inc_data)
sqlite3.OperationalError: no such table: inc_table

非常感谢您的帮助。

【问题讨论】:

  • 您的回溯与标题不匹配。我回答了您的 title 错误。

标签: python python-2.7 sqlite


【解决方案1】:

你传入了两个项;每个参数列表。

要么使用c.executemany()(它确实需要一个序列序列),要么循环inc_data 以提供c.execute() 一个 绑定值集:

# insert multiple rows; one for each entry in `inc_data`
c.executemany('INSERT INTO inc_table VALUES (?,?,?,?)', inc_data)

# or loop
for bind_values in inc_data:
    c.execute('INSERT INTO inc_table VALUES (?,?,?,?)', bind_values)

【讨论】:

  • c.executemany 完美运行。非常感谢您向我展示这两种方法。非常感谢您的帮助。
猜你喜欢
  • 2015-12-06
  • 2021-06-28
  • 1970-01-01
  • 2020-09-10
  • 2013-05-27
  • 2022-01-05
  • 2020-10-15
  • 2016-01-21
相关资源
最近更新 更多