Skip to main content
 首页 » 编程设计

python sqlite问题-插入方法

2025年05月04日14TianFang

在下面的代码中,row 是一个包含 200 个元素(数字)的元组,listOfVars 是一个包含 200 个字符串的元组,这些字符串是 testTable< 中的变量名。 tupleForm 是一个元组列表,每个元组有 200 个元素。

以下代码无效。它返回语法错误:

for row in tupleForm: 
    cmd = '''INSERT INTO testTable listOfVars values row''' 
    cur.execute(cmd)      

但是,以下工作正常。有人可以解释为什么吗?我发现 sqlite 非常不直观。

for row in tupleForm: 
    cmd = '''INSERT INTO testTable %s values %s'''%(listOfVars, row)  
    cur.execute(cmd) 

感谢您的帮助。

请您参考如下方法:

insert_query = '''INSERT INTO testTable ({0}) VALUES ({1})'''.format( 
               (','.join(listOfVars)), ','.join('?'*len(listOfVars))) 
cur.executemany(insert_query, tupleForm) 

数据库查询请不要使用普通的字符串插值。
我们有幸拥有the DB-API其中详细说明了如何执行您的要求。

编辑:
此方法优于您的第二次尝试的几个简单原因:

  1. 通过使用内置的字符串转义工具,我们避免了 SQL 注入(inject)攻击,并且
  2. executemany 接受元组列表作为参数。