2012-05-09 10 views
11

Hier ist, was ich derzeit haben:Wie exportiert man Sqlite nach CSV in Python, ohne als Liste formatiert zu werden?

conn = sqlite3.connect(dbfile) 
conn.text_factory = str ## my current (failed) attempt to resolve this 
cur = conn.cursor() 
data = cur.execute("SELECT * FROM mytable") 

f = open('output.csv', 'w') 
print >> f, "Column1, Column2, Column3, Etc." 
for row in data: 
    print >> f, row 
f.close() 

Es erstellt eine CSV-Ausgabedatei, die wie folgt aussieht:

Column1, Column2, Column3, Etc. 
(1, u'2011-05-05 23:42:29',298776684,1448052234,463564768,-1130996322, None, u'2011-05-06 04:44:41') 

Ich will nicht die Zeilen in Klammern sein, noch haben Anführungszeichen noch das 'du' vor den Strings. Wie bekomme ich es, die Zeilen in csv ohne all dies zu schreiben? Danke,

Antwort

21

Was Sie gerade tun, druckt die Python-String-Darstellung eines Tupels, d. H. Den Rückgabewert str(row). Dazu gehören die Anführungszeichen und 'u' und Klammern und so weiter.

Stattdessen möchten Sie die Daten ordnungsgemäß für eine CSV-Datei formatiert. Nun, versuchen Sie die csv module. Es weiß, wie man Dinge für CSV-Dateien formatiert, nicht überraschend genug.

with open('output.csv', 'wb') as f: 
    writer = csv.writer(f) 
    writer.writerow(['Column 1', 'Column 2', ...]) 
    writer.writerows(data) 
+0

Das hat es geschafft, danke! – Dan

Verwandte Themen