在下面的代码中,row
是由200个元素(数字)组成的元组,listOfVars
是一个由200个字符串组成的元组,这些字符串是{}中的变量名。tupleForm
是元组的列表,每个元组中有200个元素。在
以下代码不工作。它返回语法错误:
for row in tupleForm:
cmd = '''INSERT INTO testTable listOfVars values row'''
cur.execute(cmd)
但是,下面的工作很好。有人能解释一下为什么吗?我发现sqlite太不直观了。在
^{pr2}$
谢谢你的帮助。在
Tags:
请不要对数据库查询使用普通字符串插值。
我们很幸运有the DB-API,它详细解释了如何做你需要的。在
编辑:
为什么这种方法比你的第二次尝试更好的几个简单原因:
executemany
接受元组列表作为参数。在第一次尝试使用字符串作为值,这是错误的。第二种方法将元组的字符串值替换为字符串,这两种情况下都会产生
(...)
。在但是这两种形式都是不正确的,因为第二种形式根本没有转义值。您应该使用参数化查询。在
相关问题 更多 >
编程相关推荐