[英]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.