2017-02-16 103 views
-1
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行被阻塞。 这是没有注释(丹尼尔)“ValueError:操作参数必须是str”

我要值与反复添加到我的数据库使用分离器循环“”

产生的误差是整个代码:

从CSV

line 16, in cursor.execute(('INSERT INTO users VALUES(?,?,?,?,?,?,?)', t,)) ValueError: operation parameter must be str

提取物:

Nom;Prenom;Date de naissance;Fonction;Departement;Courriel;Telephone 
DOE;John;10/10/1950;Directeur;Direction;[email protected];01 02 03 04 05 

也许我的csv文件已损坏?

完全回溯:

+0

这似乎是第16行,而不是第23行。请显示您的实际代码和完整的回溯。 –

+0

代码和回溯更新:) – Yass

+0

data.csv内容的提取也会有所帮助。另外:为什么't = 0'? –

回答

0

根据您的CSV exerpt分隔符显然应;

此外,你总是会将头文件(Nom; Prenom;...)导入到数据库中,也许你应该跳过csv文件的第一行。

的问题是在该行

cursor.execute(('INSERT INTO users VALUES(?,?,?,?,?,?,?)', t)) 

交易所双(()) - 然后一切工作正常。 t是一个字符串列表,(t)是一个包含一个列表的集合。

+0

这很好,谢谢:) – Yass

+0

很棒。你可以标记我的答案为可接受的(点击左边的复选标记)。 - ) –

+1

当然可以:) – Yass

相关问题