How to export sqlite to CSV in Python without being formatted as a list? How to export sqlite to CSV in Python without being formatted as a list? python python

How to export sqlite to CSV in Python without being formatted as a list?


What you're currently doing is printing out the python string representation of a tuple, i.e. the return value of str(row). That includes the quotes and 'u's and parentheses and so on.

Instead, you want the data formatted properly for a CSV file. Well, try the csv module. It knows how to format things for CSV files, unsurprisingly enough.

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


my version that works without issues with just a couple of lines.

import pandas as pdconn = 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)

If you want a table separated file, change the .csv extension to .tsv and add this sep='\t'


Converting an sqlite database table to csv file can also be done directly using sqlite3 tools:

>sqlite3 c:/sqlite/chinook.dbsqlite> .headers onsqlite> .mode csvsqlite> .output data.csvsqlite> SELECT customerid,   ...>        firstname,   ...>        lastname,   ...>        company   ...>   FROM customers;sqlite> .quit

The above sqlite3 commands will will create a csv file called data.csv in your current directory (of course this file can be named whatever you choose). More details are available here: http://www.sqlitetutorial.net/sqlite-export-csv/