从 sqlalchemy 转储 csv

新手上路,请多包涵

出于某种原因,我想以 csv 文件的形式从数据库 (sqlite3) 中转储一个表。我正在使用带有长生不老药(基于 sqlalchemy)的 python 脚本来修改数据库。我想知道是否有任何方法可以将我使用的表格转储为 csv。

我见过 sqlalchemy 序列化 器,但它似乎不是我想要的。我做错了吗?我应该在关闭 sqlalchemy 会话后调用 sqlite3 python 模块 转储到文件吗?或者我应该用自制的东西吗?

原文由 tmoisan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 589
2 个回答

有很多方法可以实现这一点,包括一个简单的 os.system() 调用 sqlite3 实用程序(如果您安装了该实用程序),但这是我从 Python 中大致要做的事情:

 import sqlite3
import csv

con = sqlite3.connect('mydatabase.db')
outfile = open('mydump.csv', 'wb')
outcsv = csv.writer(outfile)

cursor = con.execute('select * from mytable')

# dump column titles (optional)
outcsv.writerow(x[0] for x in cursor.description)
# dump rows
outcsv.writerows(cursor.fetchall())

outfile.close()

原文由 Peter Hansen 发布,翻译遵循 CC BY-SA 2.5 许可协议

在这里稍微修改 Peter Hansen 的回答,使用 SQLAlchemy 而不是原始数据库访问

import csv
outfile = open('mydump.csv', 'wb')
outcsv = csv.writer(outfile)
records = session.query(MyModel).all()
[outcsv.writerow([getattr(curr, column.name) for column in MyTable.__mapper__.columns]) for curr in records]
# or maybe use outcsv.writerows(records)

outfile.close()

原文由 RyanWilcox 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏