当我的瓶子应用程序启动时,它需要通过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的解决方案似乎很笨拙。
答案 0 :(得分: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 =)