我使用带有sqlite数据库的SQLObject来存储文档记录。文档已经扫描了存储在文本文件中的文档信息。我需要读取所有这些文本文件(大约800个),并从中加载文档记录(平均每个文件40个文档)。目前我的代码如下(文档为表格) :-
for doc in cc.documents:
print doc['id']
doc_recs = Document.selectBy(costcode = x, doc_id = int(doc['id']))
dcmnt = doc_recs.getOne(None)
if not dcmnt:
dcmnt = Document(costcode = x, doc_id = int(doc['id']))
dcmnt.title = doc['title']
dcmnt.author = doc['author']
dcmnt.recipient = doc['recipient']
dcmnt.date = doc['date']
dcmnt.firstpage = doc['firstpage']
dcmnt.lastpage = doc['lastpage']
dcmnt.type = doc['type']
dcmnt.allpages = doc['allpages']但这需要很长的时间,并且随着每条记录的增加而变得更长。
假设每次我更改属性时,SQLObject都会提交记录,这是很浪费的。如果我只是添加记录,我可以在第一次创建记录的同时创建属性,这应该会更快,但SQLObjects在添加记录方面似乎仍然很慢。
发布于 2017-05-08 05:41:01
第一,不要逐个更新列。而不是
dcmnt.title = doc['title']
dcmnt.author = doc['author']做
dcmnt.set(
title = doc['title'],
author = doc['author'],
recipient = doc['recipient'],
date = doc['date'],
firstpage = doc['firstpage'],
lastpage = doc['lastpage'],
type = doc['type'],
allpages = doc['allpages'],
)这会发送一次更新,而不是一打。
第二,对于体块插入,使用SQLBuilder。它不太方便,但要快得多。
https://stackoverflow.com/questions/13618750
复制相似问题