dump csv from sqlalchemy

前端 未结 8 433
时光取名叫无心
时光取名叫无心 2020-12-02 17:48

For some reason, I want to dump a table from a database (sqlite3) in the form of a csv file. I\'m using a python script with elixir (based on sqlalchemy) to modify the datab

相关标签:
8条回答
  • 2020-12-02 18:14

    I know this is old, but i just had this problem and this is how i solved it

    from sqlalchemy import create_engine
    
    basedir = os.path.abspath(os.path.dirname(__file__))
    sql_engine = create_engine(os.path.join('sqlite:///' + os.path.join(basedir, 'single_file_app.db')), echo=False)
    results = pd.read_sql_query('select * from users',sql_engine)
    results.to_csv(os.path.join(basedir, 'mydump2.csv'),index=False,sep=";")
    
    0 讨论(0)
  • 2020-12-02 18:15

    In a modular way: an example using slqalchemy with automap and mysql.

    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()
    

    Results:

    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 California,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 District of Columbia,DC,US,n,n,district-of-columbia,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

    0 讨论(0)
提交回复
热议问题