【问题标题】:sqlite3.programmingerror incorrect number of bindings suppliedsqlite3.programmingerror 提供的绑定数量不正确
【发布时间】:2015-12-06 10:27:24
【问题描述】:

Python 2.7 和 sqlite3

我创建一个这样的表:

#create table
connector.execute('''CREATE TABLE mytable (
column1,
column2,
column3
''')

然后我像这样遍历.csv 文件:

with open("mycsv.csv") as f:
for i in f:
    del splitted[:]
    del myData[:]
    splitted = i.split(",")
    for j in splitted:
        myData.append(tuple([j]))

这给了我这个输出:

print myData
> [('testtext1',), ('testtext2',), ('testtext3\n',)]

但是,当我尝试将其插入到我的 db 中时:

connector.executemany('''INSERT INTO mytable (
    column1,
    column2,
    column3
    ) VALUES (
    ?,?,?)''', myData) 

我得到了错误

sqlite3.programmingerror 提供的绑定数量不正确。这 当前状态使用 3,提供 tehre 1。

【问题讨论】:

    标签: python sqlite


    【解决方案1】:

    您拥有的是一个包含 3 个元组的列表,每个元组都包含 1 列。

    您希望所有 3 列组成 1 个元组的内容。然后你想将该元组添加到列表中。试试这样的:

    import sqlite3
    
    con = sqlite3.connect(":memory:")
    cur = con.cursor()
    
    cur.execute('''CREATE TABLE mytable
                 (column1 text, column2 text,column3 text)''')
    
    myData = []
    with open("mycsv.csv") as f:
        for line in f.readlines():
            line = line.rstrip('\n')
            (col1, col2, col3) = line.split(',')
            mytuple = (col1, col2, col3)
            myData.append(mytuple)
    
    cur.executemany('INSERT INTO mytable (column1, column2, column3) VALUES (?,?,?)', myData)
    
    for row in cur.execute('SELECT * FROM mytable'):
        print row
    

    输出:

    (csv2sqlite)macbook:csv2sqlite joeyoung$ python csv2sqlite.py 
    (u'testtext1', u'testtext2', u'testtext3')
    (u'testtext1', u'testtext2', u'testtext3')
    (u'testtext1', u'testtext2', u'testtext3')
    

    输入:

    (csv2sqlite)macbook:csv2sqlite joeyoung$ cat mycsv.csv 
    testtext1,testtext2,testtext3
    testtext1,testtext2,testtext3
    testtext1,testtext2,testtext3
    

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 2021-06-28
      • 1970-01-01
      • 2020-09-10
      • 2013-05-27
      • 2022-01-05
      • 2020-10-15
      • 2016-01-21
      相关资源
      最近更新 更多