выведите csv от sqlalchemy

По некоторым причинам я хочу вывести таблицу от базы данных (sqlite3) в форме файла CSV. Я использую сценарий Python с эликсиром (на основе sqlalchemy) для изменения базы данных. Я задавался вопросом, существует ли какой-либо способ вывести таблицу, я использую для csv.

Я видел sqlalchemy сериализатор, но это, кажется, не то, что я хочу. Я делаю его неправильно? Я должен назвать модуль sqlite3 python после закрывания моего sqlalchemy сеанса для дампа в файл вместо этого? Или я должен использовать что-то самодельное?

21
задан Ben 15 June 2013 в 14:15
поделиться

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()
23
ответ дан 29 November 2019 в 06:20
поделиться

Немного изменив здесь ответ Питера Хансена, чтобы использовать 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()
31
ответ дан 29 November 2019 в 06:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: