如何在Python中从数据库创建CSV文件?

Mer*_*lin 25 python mysql csv sqlite file-io

我有一个名为"clients"的Sqlite 3和/或MySQL表.

使用python 2.6,如何使用标题创建名为Clients100914.csv的csv文件?excel方言...

Sql执行:select*只提供表数据,但我希望完整的表包含标题.

如何创建记录集以获取表头.表头应该直接来自不是用python编写的sql.

w = csv.writer(open(Fn,'wb'),dialect='excel')
#w.writelines("header_row")
#Fetch into sqld
w.writerows(sqld)
Run Code Online (Sandbox Code Playgroud)

这段代码让我打开文件,没有标题.也无法弄清楚如何使用文件作为日志.

Cri*_*itu 59

import csv
import sqlite3

from glob import glob; from os.path import expanduser
conn = sqlite3.connect( # open "places.sqlite" from one of the Firefox profiles
    glob(expanduser('~/.mozilla/firefox/*/places.sqlite'))[0]
)
cursor = conn.cursor()
cursor.execute("select * from moz_places;")
#with open("out.csv", "w", newline='') as csv_file:  # Python 3 version    
with open("out.csv", "wb") as csv_file:              # Python 2 version
    csv_writer = csv.writer(csv_file)
    csv_writer.writerow([i[0] for i in cursor.description]) # write headers
    csv_writer.writerows(cursor)
Run Code Online (Sandbox Code Playgroud)

PEP 249(DB API 2.0)有更多信息cursor.description.

  • 对于游标中的行:csv_writer.writerow(row)> csv_writer.writerows(row) (2认同)

Ste*_*son 9

使用csv模块非常简单,可以完成这项任务.

import csv
writer = csv.writer(open("out.csv", 'w'))
writer.writerow(['name', 'address', 'phone', 'etc'])
writer.writerow(['bob', '2 main st', '703', 'yada'])
writer.writerow(['mary', '3 main st', '704', 'yada'])
Run Code Online (Sandbox Code Playgroud)

准确创建您期望的格式.

  • 它不以编程方式编写表的标题. (3认同)

Gui*_*ois 5

您可以轻松地手动创建它,使用选定的分隔符编写文件.您也可以使用csv模块.

如果它来自数据库,您只需使用sqlite客户端的查询:

sqlite <db params> < queryfile.sql > output.csv
Run Code Online (Sandbox Code Playgroud)

这将创建一个带有制表符分隔符的csv文件.