import csv
import sqlite3
connection = sqlite3.connect('db.db')
cursor = connection.cursor()
cursor.execute('DROP TABLE IF EXISTS users')
cursor.execute('CREATE TABLE users (Nom TEXT,Prenom TEXT,Date de naissance DATE,Fonction TEXT,Departement TEXT,Courriel TEXT,Telephone varchar(15)) ')
connection.commit()
csvfile = open('data.csv',"rt")
creader = csv.reader(csvfile, delimiter=',', quotechar='|')
t = 0
for t in creader:
cursor.execute(('INSERT INTO users VALUES(?,?,?,?,?,?,?)', t))
csvfile.close()
connection.commit()
connection.close()
自20分钟以来,我的剧本第16行被封锁了。 这是没有评论的整个代码(Daniel)
我想使用分隔符“,”
使用for循环迭代地向我的数据库添加值生成的错误是:
第16行,在cursor.execute中(('INSERT INTO用户VALUES(?,?,?,?,?,?,?)',t,))ValueError:操作参数必须是str
从csv中提取:
Nom;Prenom;Date de naissance;Fonction;Departement;Courriel;Telephone
DOE;John;10/10/1950;Directeur;Direction;john@doe.com;01 02 03 04 05
也许我的csv文件已损坏?
完整追溯:
答案 0 :(得分:0)
根据你的csv exerpt,分隔符显然应该是;
。
此外,您始终会将标头(Nom; Prenom;...
)导入数据库,也许您应该跳过csv文件的第一行。
问题出在
行cursor.execute(('INSERT INTO users VALUES(?,?,?,?,?,?,?)', t))
交换双((
和))
- 然后一切正常。 t
是字符串列表,(t)是包含一个列表的集合。