एक मॉड्यूलर तरीके से: एक उदाहरण 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:[email protected]: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()
परिणाम:
नाम, जो अल्कोहल, देश, is_state, is_lower48, स्लग, अक्षांश, देशांतर, जनसंख्या, क्षेत्र अलास्का, एके, यूएस, वाई, एन, अलास्का, 61.370716, -152.404419,710231,571951.25 अलबामा, एएल, यूएस, वाई, वाई, अलाबामा, 32.806671, -86.79113,4779736,50744.0 अरकंसास, एआर, यूएस, वाई, वाई, अरकंसास, 34.9 670704, -92.373123,2915918,52068.17 एरिजोना, एजेड, यूएस, वाई, वाई, एरिजोना, 33.72 9 75 9, -111.431221,6392017,113634.57 कैलिफ़ोर्निया, सीए, यूएस, वाई , वाई, कैलिफोर्निया, 36.116203, -11 9.681564,37253956,155939.52 कोलोराडो, सीओ, यूएस, वाई, वाई, कोलोराडो, 39.059811, -105.311104,5029196,103717.53 कनेक्टिकट, सीटी, यूएस, वाई, वाई, कनेक्टिकट, 41.597782, - 72.755371,3574097,4844.8 कोलंबिया जिला, डीसी, यूएस, एन, एन, जिला-कोलम्बिया जिला, 38.8 9 7438, -77.026817,601723,68.34 डेलावेयर, डीई, यूएस, वाई, वाई, डेलावेयर, 39.318523, -75.507141, 897934,1953.56 फ्लोरिडा, फ्लोरिडा, अमेरिका, वाई, वाई, फ्लोरिडा, २७.७,६६,२७९, -81.686783,18801310,53926.82 जॉर्जिया, GA, अमेरिका, वाई, वाई, जॉर्जिया, ३३.०,४०,६१९, -83.643074,9687653,57906.14
बस एक छोटा रिमा आरके: 'outcsv.writerows (रिकॉर्ड्स) 'के परिणामस्वरूप' त्रुटि: अनुक्रम अपेक्षित ' – miku
भी आप' __mapper__' [विशेषता] (http://www.sqlalchemy.org/docs) का उपयोग कर एक ही समय में सभी कॉलम प्राप्त कर सकते हैं /orm/extensions/declarative.html#synopsis), इस प्रकार: '[outcsv.writerow ([getattr (curr, column.name) MyModel में कॉलम के लिए .__ mapper__।कॉलम]) रिकॉर्ड्स में कर्सर के लिए] ' – miku
कॉलम का वर्णन करने के लिए प्रारंभिक हेडर पंक्ति जोड़ने के लिए, ' outcsv.writerow ([MyModel में कॉलम के लिए कॉलम.नाम .__ मैपर __। कॉलम]) ' – bschwagg