不可否认我对Python和Sqlite3都很新,我试图将两个列表的内容添加到数据库中,以便一个列表在第一列中,第二个列表显示在第二列中。到目前为止,我一直没有成功。我明确地犯了一个基本错误,我得到的错误信息是这样的:" sqlite3.InterfaceError:错误绑定参数0 - 可能是不支持的类型。"
我的代码是:
Array.indexOf
错误的发生是因为for循环特别是" idofperson"变量
理想的结果是我希望在sql中创建两个列,一个是名称,另一个是id。
非常感谢任何帮助。
答案 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