2017-02-16 102 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

相關問題