2012-05-09 14 views
11

Esto es lo que tengo actualmente:¿Cómo exportar sqlite a CSV en Python sin formatearlo como una lista?

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 archivo CSV con la salida que se parece a esto:

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

no quiero que las filas para estar entre paréntesis ni tienen ni cotizaciones la 'u' antes de las cuerdas. ¿Cómo puedo escribir las filas en csv sin todo esto? Gracias,

Respuesta

21

Lo que está haciendo actualmente es imprimir la representación de cadena de python de una tupla, es decir, el valor de retorno de str(row). Eso incluye las comillas y 'u's y paréntesis, y así sucesivamente.

En su lugar, desea que los datos estén formateados correctamente para un archivo CSV. Bueno, prueba el csv module. Sabe cómo formatear cosas para archivos CSV, como era de esperar.

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

¡Eso lo hizo, gracias! – Dan

Cuestiones relacionadas