首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"ProgrammingError:提供的绑定数不正确“由于将.csv转换为.db

"ProgrammingError:提供的绑定数不正确“由于将.csv转换为.db
EN

Stack Overflow用户
提问于 2020-11-03 10:09:23
回答 1查看 52关注 0票数 1

我的代码

代码语言:javascript
复制
import csv
import sqlite3
from datetime import datetime

con = sqlite3.connect('D:/database.db')
cur = con.cursor()
cur.execute('''DROP TABLE IF EXISTS data''')
cur.execute('''CREATE TABLE data(answer TEXT, reply TEXT)''')


with open('D:/database.xls.csv','rt', encoding = 'utf-8', errors = 'ignore') as fin:
    reader = csv.reader(fin)                  
    to_db = [tuple(line) for line in reader]

cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', [to_db])
con.commit()
con.close()

错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\runol\source\repos\AI_ChatBot\AI_ChatBot\AI_ChatBot.py", line 19, in <module>
    cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', [to_db])
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 631248 supplied.

第19行如下所示:cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', (to_db))

然后我尝试使用逗号和列表:cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', (to_db,)) cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', [to_db])

错误保持不变

EN

回答 1

Stack Overflow用户

发布于 2020-11-03 10:18:40

to_db已经是一个元组列表-不需要用另一个列表包装它。([to_db])

所以下面的固定线路应该能正常工作

代码语言:javascript
复制
cur.executemany('''INSERT INTO data (answer, reply) VALUES (?, ?)''', to_db)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64660716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档