2

我正在尝试使用 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.  
4

1 回答 1

4

不要在每条记录上都提交。提交或每 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

如果这仍然给您带来问题,那么做一些基本的分析,请参阅我的帖子如何分析 SQLAlchemy 支持的应用程序?

于 2012-04-22T01:13:35.870 回答