如何在Python中的for循环中将多个Columns添加到Sqlite3中

时间:2016-11-18 03:07:49

标签: python for-loop sqlite

不可否认我对Python和Sqlite3都很新,我试图将两个列表的内容添加到数据库中,以便一个列表在第一列中,第二个列表显示在第二列中。到目前为止,我一直没有成功。我明确地犯了一个基本错误,我得到的错误信息是这样的:" sqlite3.InterfaceError:错误绑定参数0 - 可能是不支持的类型。"

我的代码是:

Array.indexOf

错误的发生是因为for循环特别是" idofperson"变量

理想的结果是我希望在sql中创建两个列,一个是名称,另一个是id。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

我想你只是改变了

index =0
for link in names:
idofperson = ids[index]
c.execute("INSERT INTO thetable(name, id)VALUES(?, ?)", ( [link], idofperson ))

到此(使用枚举并将[list]更改为list,因为您将list传递到需要TEXT类型的列中):

for index, link in enumrable(names):
idofperson = ids[index]
c.execute("INSERT INTO thetable(name, id)VALUES(?, ?)", ( link, idofperson ))

答案 1 :(得分:0)

你的变量索引没有使用on循环上的enumerate来增加。或者只是在执行

后添加索引+ = 1

答案 2 :(得分:0)

对于你的问题,试试这个:

import sqlite3

names = ['Tom', 'Dick', 'Harry']
ids = ['A452', 'B698', 'Kd9f']
data = zip(names, ids)
conn = sqlite3.connect('testforinput.db')
c = conn.cursor()
c.execute("CREATE TABLE thetable(name TEXT, id TEXT)")


for d in data:
    sql = "INSERT INTO thetable (name, id) VALUES ('%s', '%s'); " % d
    c.execute(sql)

conn.commit()
conn.close()

我建议将数据更改为dict列表,例如[{'name':'Tom', 'id': 'A452'}, {'name':'dick', 'id':'B698'}..] 并且您可以通过数据生成插入sql,这使插入更加灵活。

答案 3 :(得分:0)

由于您尝试推送的数据类型不受支持而发生错误,您无法按原样存储列表,您需要更改为其他受支持的数据类型,我喜欢此解决方案....它对我有用https://stackoverflow.com/a/18622264/6180263