如何在Python中将sqlite导出为CSV而不格式化为列表?

2024-05-17 04:34:24 发布

您现在位置: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?谢谢


Tags: csvtextdatafactoryconnectetcconnsqlite3
2条回答

也可以直接使用sqlite3工具将sqlite数据库表转换为csv文件:

>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命令将在当前目录中创建一个名为data.csv的csv文件(当然,这个文件可以命名为任何您选择的名称)。更多详细信息请访问:http://www.sqlitetutorial.net/sqlite-export-csv/

您当前所做的是打印出元组的python字符串表示,即str(row)的返回值。包括引号、u和括号等等。

相反,您希望CSV文件的数据格式正确。好吧,试试^{} module。它知道如何为CSV文件格式化,这并不奇怪。

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

相关问题 更多 >