【问题标题】:Reading large files using SQLalchemy使用 SQLalchemy 读取大文件
【发布时间】:2012-05-02 15:01:10
【问题描述】:

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

【问题讨论】:

    标签: csv sqlalchemy python-2.7


    【解决方案1】:

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

    如果这仍然给您带来问题,请进行一些基本的分析,请参阅我在 How can I profile a SQLAlchemy powered application? 的帖子

    【讨论】:

    • 谢谢!这导致了速度的大幅提升。我还将使用分析器来更多地了解 SQLalchemy 优化
    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2013-11-28
    • 2015-06-28
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多