Как экспортировать sqlite в CSV в Python без форматирования в виде списка?
вот что у меня сейчас есть:
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()
Он создает CSV-файл с выводом, который выглядит следующим образом:
Column1, Column2, Column3, Etc.
(1, u'2011-05-05 23:42:29',298776684,1448052234,463564768,-1130996322, None, u'2011-05-06 04:44:41')
Я не хочу, чтобы строки были в круглых скобках, ни кавычки, ни " u " перед строками. Как мне заставить его писать строки в csv без всего этого? Спасибо,
2 ответов
В настоящее время вы печатаете строковое представление Python кортежа, т. е. возвращаемое значение str(row)
. Это включает в себя кавычки и " u " и скобки и так далее.
вместо этого вы хотите, чтобы данные были правильно отформатированы для CSV-файла. Ну, попробуйте csv
модуль. Он знает, как форматировать вещи для CSV-файлов, что неудивительно.
with open('output.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerow(['Column 1', 'Column 2', ...])
writer.writerows(data)
преобразование таблицы базы данных sqlite в csv-файл также может быть сделано непосредственно с помощью инструментов 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
вышеуказанные команды sqlite3 создадут csv-файл с именем data.csv
в вашем текущем каталоге (конечно, этот файл можно назвать как угодно). Более подробная информация доступна здесь: http://www.sqlitetutorial.net/sqlite-export-csv/