SQLObject - 更新许多记录

时间:2012-11-29 04:16:38

标签: python sqlite sqlobject

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

    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在添加记录时似乎很慢。

1 个答案:

答案 0 :(得分:0)

1,不要逐个更新列。而不是

    dcmnt.title = doc['title']
    dcmnt.author = doc['author']

DO

    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'],
    )

这会发送一个UPDATE而不是十几个。

第2,用于大量插入使用SQLBuilder。它不太方便但速度更快。

相关问题