关键词:
【中文标题】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=字 查看详情