2012-05-09 8 views
11

Ecco quello che ho attualmente:Come esportare sqlite in CSV in Python senza essere formattato come un elenco?

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() 

crea un file CSV con uscita che assomiglia a questo:

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

Non voglio le righe per essere tra parentesi né hanno né citazioni la "tu" prima delle stringhe. Come faccio a scrivere le righe su csv senza tutto questo? Grazie,

risposta

21

Quello che stai facendo attualmente è stampare la rappresentazione in stringa python di una tupla, cioè il valore restituito di str(row). Questo include le virgolette e 'u's e parentesi e così via.

Invece, si desidera che i dati siano formattati correttamente per un file CSV. Bene, prova il csv module. Sa come formattare le cose per i file CSV, abbastanza sorprendentemente.

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

Questo ha funzionato, grazie! – Dan

Problemi correlati