sqlite绑定数不正确:如果没有值可用,则插入none



我创建了一个41列50行的python列表。现在我想把它插入到SQLite数据库中。当我执行数据库导出时,我得到了错误消息:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 41, and there are 40 supplied.

大多数列表字段都应该有数据。也许有一两个没有。我可以写到sqlite数据库提示如下:如果数据可用,则插入,否则无写入或者类似的东西?

我的代码是:

c.execute("""CREATE TABLE IF NOT EXISTS statstable (
spielid integer PRIMARY KEY,
41x field descr. (real, integer and text)
UNIQUE (spielid)
)
""")
c.executemany("INSERT OR REPLACE INTO statstable VALUES (41x ?)", all_data)

将适当数量的None值附加到嵌套列表中,使它们全部为41个元素:

c.executemany("INSERT OR REPLACE INTO statstable VALUES (41x ?)", 
[l + [None] * (41 - len(l)) for l in all_data])

假设缺失的元素总是在列列表的末尾。如果它们可以是每一行的不同列,我不知道如何实现任何自动解决方案。

如果all_data的元素是字典,其键对应于列名,则可以确定缺少哪些键。然后将其转换为列表,在这些列的适当位置使用None占位符。

最新更新