【问题标题】:Python: CSV to list of dictionaries to DB rows?Python:CSV 到数据库行的字典列表?
【发布时间】:2016-09-05 15:53:16
【问题描述】:

当我的烧瓶应用程序启动时,它需要通过 SQLalchemy 向 Postgres 添加一堆数据。我正在寻找一个好方法来做到这一点。数据是 TSV 格式,我已经有一个 SQLalchemy db.model 模式。现在:

for datafile in datafiles:
    with open(datafile,'rb') as file:
        # reader = csv.reader(file, delimiter='\t')
        reader = csv.DictReader(file, delimiter='\t', fieldnames=[])
        OCRs = # somehow efficiently convert to list of dicts...
        db.engine.execute(OpenChromatinRegion.__table__.insert(), OCRs)

有没有更好、更直接的方法?否则,生成 OCRs 的最佳方法是什么?

here 建议的解决方案似乎很笨拙。

【问题讨论】:

    标签: python sqlalchemy flask-sqlalchemy


    【解决方案1】:
    import csv
    from collections import namedtuple
    
    fh = csv.reader(open(you_file, "rU"), delimiter=',', dialect=csv.excel_tab)
    headers = fh.next()
    Row = namedtuple('Row', headers)
    OCRs = [Row._make(i)._asdict() for i in fh]
    db.engine.execute(OpenChromatinRegion.__table__.insert(), OCRs)
    
    # plus your loop for multiple files and exception handling of course =)
    

    【讨论】:

    • [CRITICAL] WORKER TIMEOUT db.engine.execute(OpenChromatinRegion.__table__.insert(), OCRs)。有什么想法吗?
    • 可能不相关,看起来它来自网络服务器?这是我要做的:在 MySQL 端启用常规日志记录:show global variables like '%general%'; set global general_log = ON; 然后尾部 mysql 常规日志文件(您将在上面的输出中看到位置)。查看执行查询需要多少时间,如果很慢,请尝试优化。否则,这不是 DB 或 sqla 问题,您需要使用 Web 服务器设置。
    猜你喜欢
    • 1970-01-01
    • 2018-10-27
    • 1970-01-01
    • 2023-03-03
    • 2021-04-10
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 2020-12-28
    相关资源
    最近更新 更多