Csv 使用SQLalchemy读取大文件

Csv 使用SQLalchemy读取大文件,csv,sqlalchemy,python-2.7,Csv,Sqlalchemy,Python 2.7,我正在尝试使用SQLalchemy读取一个200 MB的csv文件。每行大约有30列,其中,我使用下面的代码仅使用8列。但是,代码运行速度非常慢!有没有办法改善这一点?我想使用地图/列表理解或其他技术。正如你所说,我是个新手。谢谢你的帮助 for ddata in dread: record = DailyData() record.set_campaign_params(pdata) #Pdata is assigned in the previous step

我正在尝试使用SQLalchemy读取一个200 MB的csv文件。每行大约有30列,其中,我使用下面的代码仅使用8列。但是,代码运行速度非常慢!有没有办法改善这一点?我想使用地图/列表理解或其他技术。正如你所说,我是个新手。谢谢你的帮助

for ddata in dread:        
    record = DailyData()
    record.set_campaign_params(pdata) #Pdata is assigned in the previous step         
    record.set_daily_data(ddata) #data is sent to a class method where only 8 of 30 items in the list are used       
    session.add(record)
    session.commit() #writing to the SQL database.  

不要对每一张记录都做出承诺。每1000左右提交或刷新一次:

for i, data in enumerate(csv_stuff):
    rec = MyORMObject()
    rec.set_stuff(data)
    session.add(rec)
    if i % 1000 == 0:
        session.flush()
session.commit() # flushes everything remaining + commits

如果这仍然给你带来问题,那么做一些基本的评测,请参阅我的帖子,网址为

不要对每条记录都提交。每1000左右提交或刷新一次:

for i, data in enumerate(csv_stuff):
    rec = MyORMObject()
    rec.set_stuff(data)
    session.add(rec)
    if i % 1000 == 0:
        session.flush()
session.commit() # flushes everything remaining + commits

如果这仍然给你带来问题,那么做一些基本的分析,请参阅我的帖子

谢谢!这导致了速度的大幅提升。我还将使用profiler对自己进行更多关于SQLalchemy优化的教育谢谢!这导致了速度的大幅提升。我还将使用profiler对自己进行更多关于SQLalchemy优化的教育