How to export sqlite to CSV in Python without being formatted as a list?
csv, export-to-csv, python, sqlite
Solution
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', 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['Column 1', 'Column 2', ...])
writer.writerows(data)
The `newline=''` is apparently needed for correct escaping of newlines inside quoted fields.
Problem
Here is what I currently have: ``` 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() ``` It creates a CSV file with output that looks like this: ``` Column1, Column2, Column3, Etc. (1, u'2011-05-05 23:42:29',298776684,1448052234,463564768,-1130996322, None, u'2011-05-06 04:44:41') ``` I don't want the rows to be in parentheses nor have quotes nor the 'u' before strings. How do I get it to write the rows to csv without all of this? Thanks,