首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLObject -更新多条记录

SQLObject -更新多条记录
EN

Stack Overflow用户
提问于 2012-11-29 12:16:38
回答 1查看 166关注 0票数 2

我使用带有sqlite数据库的SQLObject来存储文档记录。文档已经扫描了存储在文本文件中的文档信息。我需要读取所有这些文本文件(大约800个),并从中加载文档记录(平均每个文件40个文档)。目前我的代码如下(文档为表格) :-

代码语言:javascript
复制
    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在添加记录方面似乎仍然很慢。

EN

回答 1

Stack Overflow用户

发布于 2017-05-08 05:41:01

第一,不要逐个更新列。而不是

代码语言:javascript
复制
    dcmnt.title = doc['title']
    dcmnt.author = doc['author']

代码语言:javascript
复制
    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。它不太方便,但要快得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13618750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档