首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tinydb:如何使用条件更新文档

tinydb:如何使用条件更新文档
EN

Stack Overflow用户
提问于 2018-06-02 02:58:33
回答 1查看 3.6K关注 0票数 1

嗨,我想更新一些与查询相匹配的文档。因此,对于每个文档,我想更新字段'parent_id'当且仅当该文档具有ID greater then,即6

代码语言:javascript
复制
        for result in results:
            db.update(set('parent_id', current_element_id), 
                      result.get('id') > current_element_id )

错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "debug.py", line 569, in <module>
    convertxml=parse(xmlfile, force_list=('interface',))
  File "debug.py", line 537, in parse
    parser.Parse(xml_input, True)
  File "..\Modules\pyexpat.c", line 468, in EndElement
  File "debug.py", line 411, in endElement
    db.update(set('parent_id', current_element_id), result.get('id') > current_element_id )
  File "C:\ProgramData\Miniconda3\lib\site-packages\tinydb\database.py", line 477, in update
    cond, doc_ids
  File "C:\ProgramData\Miniconda3\lib\site-packages\tinydb\database.py", line 319, in process_elements
    if cond(data[doc_id]):
TypeError: 'bool' object is not callable

应更新的文件示例:

代码语言:javascript
复制
...,
{'URI': 'http://www.john-doe/',
 'abbr': 'IDD',
 'affiliation': 'USA',
 'closed': False,
 'created': '2018-06-01 22:49:02.927347',
 'element': 'distrbtr',
 'id': 7,
 'parent_id': None
 },...

文档 of tinydb中,我看到可以使用set。否则,如果我不使用Set,它将更新all,document db.update(dict),这是我不想要的。

EN

回答 1

Stack Overflow用户

发布于 2018-06-02 04:51:32

使用使用write_back的文档对文档的替换部分更好

代码语言:javascript
复制
>>> docs = db.search(User.name == 'John')
[{name: 'John', age: 12}, {name: 'John', age: 44}]
>>> for doc in docs:
...     doc['name'] = 'Jane'
>>> db.write_back(docs)  # Will update the documents we retrieved
>>> docs = db.search(User.name == 'John')
[]
>>> docs = db.search(User.name == 'Jane')
[{name: 'Jane', age: 12}, {name: 'Jane', age: 44}]

在我的情况下实施

代码语言:javascript
复制
for result in results:
    if result['parent_id'] != None:
        result['parent_id']  = current_element_id
db.write_back(results)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50653109

复制
相关文章

相似问题

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