我正在运行这一行:
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.
我已经尝试了各种各样的SO回答其他问题,但我继续得到这个错误。我怎么只提供1个绑定?该列表中有2个元组。
答案 0 :(得分:1)
假设您希望在第二个字段中插入带有空值的两行,请尝试以下操作:
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非常强大,因此查询问题可能就地处理(另一方面插入和更新异常是不同的)。