Solución:
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, las ‘u’ y los paréntesis, etc.
En su lugar, desea que los datos tengan el formato adecuado para un archivo CSV. Bueno, prueba el csv
módulo. 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)
mi versión que funciona sin problemas con solo un par de líneas.
import pandas as pd
conn = sqlite3.connect(db_file, isolation_level=None,
detect_types=sqlite3.PARSE_COLNAMES)
db_df = pd.read_sql_query("SELECT * FROM error_log", conn)
db_df.to_csv('database.csv', index=False)
Si desea un archivo separado por tablas, cambie la extensión .csv a .tsv y agregue este sep='t'
La conversión de una tabla de base de datos sqlite a un archivo csv también se puede hacer directamente usando las herramientas sqlite3:
>sqlite3 c:/sqlite/chinook.db
sqlite> .headers on
sqlite> .mode csv
sqlite> .output data.csv
sqlite> SELECT customerid,
...> firstname,
...> lastname,
...> company
...> FROM customers;
sqlite> .quit
Los comandos sqlite3 anteriores crearán un archivo csv llamado data.csv
en su directorio actual (por supuesto, este archivo puede tener el nombre que elija). Más detalles están disponibles aquí: http://www.sqlitetutorial.net/sqlite-export-csv/