我正在使用带有 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 在添加记录时似乎仍然很慢。
请您参考如下方法:
第一,不要一一更新列。而不是
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 .它不太方便,但速度更快。
