モジュール方式:automapとmysqlでslqalchemyを使用した例。
database.py:
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy import create_engine
Base = automap_base()
engine = create_engine('mysql://user:pass@localhost:3306/database_name', echo=True)
Base.prepare(engine, reflect=True)
# Map the tables
State = Base.classes.states
session = Session(engine, autoflush=False)
export_to_csv.py:
from databases import *
import csv
def export():
q = session.query(State)
file = './data/states.csv'
with open(file, 'w') as csvfile:
outcsv = csv.writer(csvfile, delimiter=',',quotechar='"', quoting = csv.QUOTE_MINIMAL)
header = State.__table__.columns.keys()
outcsv.writerow(header)
for record in q.all():
outcsv.writerow([getattr(record, c) for c in header ])
if __name__ == "__main__":
export()
結果:
name、abv、country、is_state、is_lower48、slug、latitude、longitude、population、area Alaska、AK、US、y、n、alaska、61.370716、-152.404419,710231,571951.25 Alabama、AL、US、y、y、alabama 、32.806671、-86.79113,4779736,50744.0 Arkansas、AR、US、y、y、arkansas、34.969704、-92.373123,2915918,52068.17 Arizona、AZ、US、y、y、arizona、33.729759、-111.431221,6392017,113634.57カリフォルニア、CA、US、y、y、california、36.116203、-119.681564,37253956,155939.52 Colorado、CO、US、y、y、colorado、39.059811、-105.311104,5029196,103717.53 Connecticut、CT、US、y、y、connecticut 、41.597782、-72.755371,3574097,4844.8コロンビア特別区、DC、US、n、n、コロンビア特別区、38.897438、-77.026817,601723,68.34 Delaware、DE、US、y、y、delaware、39.318523、- 75.507141,897934,1953.56 Florida、FL、US、y、y、florida、27.766279、-81.686783,18801310,53926.82 Georgia、GA、US、y、y、georgia、33.040619、-83.643074,9687653,57906.14