繁体   English   中英

sqlite3 .executemany:提供的绑定数不正确

[英]sqlite3 .executemany: Incorrect number of bindings supplied

我正在运行此行:

    c.executemany('INSERT INTO frame VALUES (?,?)', list( ((f[0],), tuple(f[1])) )   )

这是f :( ('Constructed_Restraints', ['hogtie', 'hobble'])

这就是我的.executemany行的第二个参数变为:

[('Constructed_Restraints',), ('hogtie', 'hobble')]

但是,我收到此错误:

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

我已经尝试了其他问题的各种答案中的几乎所有内容,但是我仍然遇到此错误。 我如何只提供1个绑定? 该列表中有2个元组。

假设您要在第二个字段中插入两行,并且在其中添加一个空值,请尝试以下操作:

c.executemany('INSERT INTO frame VALUES (?,?)', list( ((f[0],None), tuple(f[1])) )

另一方面,如果要插入一行带有某种序列化值的数据,请尝试:

c.execute('INSERT INTO frame VALUES (?,?)', (f[0], ','.join(f[1])) )

后者将以逗号分隔值的语法插入第二个值,这会引起标准化问题。 超出此范围可能需要数据库思考,但是SQLite相当强大,因此查询问题可能可以就地处理(另一方面,插入和更新异常是不同的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM