gpt4 book ai didi

python - Pymongo 的 update_one() 返回带有 AttributeError 的 UpdateResult

转载 作者:可可西里 更新时间:2023-11-01 09:11:17 28 4
gpt4 key购买 nike

我刚刚将我的 MongoDB 和 Pymongo 升级到最新版本 3.2.1 以便能够使用 UpdateResult调用 update_one() 后的对象。但由于某种原因,返回的对象有一个字段包含 AttributeError

看看我的Pycharm screen .您可以看到 _UpdateResult__acknowledged

'Traceback (most recent call last):
File "/opt/pycharm-community-5.0.4/helpers/pydev/pydevd_resolver.py", line 191, in _getPyDictionary
attr = getattr(var, n)
AttributeError: _UpdateResult__acknowledged'

这给我带来了一个问题,因为我试图捕获所有异常,每次我需要在我的代码中使用 update_one() 时,我都会得到这个异常。

这是我的代码片段:

QUERY = {id: '1234'}
try:
record = mongoCollection.find_one(QUERY)
if record is None:
print 'Add new Record'
else:
updateResult = mongoCollection.update_one(
QUERY,
{'$addToSet': {'info': getInfo()}}
)

if updateResult['modified_count'] == 1:
mongoCollection.update_one(
QUERY,
{'$inc': {'infoCount': 1}}
)
print 'Record exists, updating if needed'
except:
print 'Failed to add/update'

幸运的是,我能够找到不会引发此异常的解决方法。我可以使用已弃用的函数 update() 而不是使用 update_one(),它只返回来自 MongoDB 的原始结果,然后不比较 updateResult['modified_count '],我可以比较 updateResult['nModified']。

但这绝对不是使用弃用函数的最佳实践...... :(

有什么想法吗?

最佳答案

对于那些可能遇到同样错误的人,我在这里得到了答案:https://jira.mongodb.org/browse/PYTHON-1055

简而言之,因为 UpdateResult 不是 Python 字典,也没有实现 __getitem__。问题是试图做

 updateResult['modified_count'] == 1

我应该用

 updateResult.modified_count == 1

因为 UpdateResult.modified_count 是一个属性。

关于python - Pymongo 的 update_one() 返回带有 AttributeError 的 UpdateResult,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35315154/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com