sqlite3.programmingerror 提供的绑定数量不正确

     2023-03-23     257

关键词:

【中文标题】sqlite3.programmingerror 提供的绑定数量不正确【英文标题】:sqlite3.programmingerror incorrect number of bindings supplied 【发布时间】: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) 

我得到了错误

。这 当前状态使用 3,提供 tehre 1。

【问题讨论】:

【参考方案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

【讨论】:

sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 1,提供了 4 个

】sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用1,提供了4个【英文标题】:sqlite3.ProgrammingError:Incorrectnumberofbindingssupplied.Thecurrentstatementuses1,andthereare4supplied【发布时间】:2020-10-1517:11:13【问题描述】:defget_stock(item... 查看详情

Python 3 SQLite3 - 绑定数量不正确

...多解决方案,显然它们都失败了。这是一个列表:sqlite3.ProgrammingError:Incorrectnumberofbindingssupplied.T 查看详情

在数据库Python中插入列表列表

...此错误“cursor.execute(\'INSERTINTOTestVALUES(?,?,?)\',list2)sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用3,提供了200个。 查看详情

SQLite、python、unicode 和非 utf 数据

...使用python将字符串存储在sqlite中,然后得到消息:sqlite3.ProgrammingError:你必须不要使用8位字节串,除非你使用可以解释的text_factory8位字节串(如text_factory=字 查看详情