【问题标题】:mongoengine save method is deprecated?mongoengine 保存方法已弃用?
【发布时间】:2017-08-10 21:03:01
【问题描述】:

我想知道为什么我的 python 说不推荐使用 mongoengine save() 方法?我在官方文档https://mongoengine.readthedocs.io/en/v0.9.0/apireference.html

中没有看到任何关于此的信息
class MyModel(Document):
    user_id = StringField(required=True)
    date = DateTimeField(required=True, default=datetime.datetime.now)

my = MyModel()
my.user_id = 'user'
my.save()

现在我明白了:

/Library/Python/2.7/site-packages/mongoengine/document.py:340: 弃用警告:不推荐使用保存。使用 insert_one 或 replace_one 而是

我已经安装了 python 2.7 并且还安装了 pymongo、mongoengine 和 bottle-mongo(可能有一些问题?)

【问题讨论】:

    标签: python mongodb pymongo mongoengine


    【解决方案1】:

    改用col.replace_one({‘_id': doc['_id']}, doc, True)

    API 是replace_one(filter, replacement, upsert=False, bypass_document_validation=False, collation=None, session=None)

    如果filter 找不到任何内容,则使用upsert = True 插入新文档。

    【讨论】:

      【解决方案2】:

      MongoEngine 包装了 PyMongo,它在 PyMongo 3.0 中弃用了“save”:

      http://api.mongodb.com/python/current/changelog.html#collection-changes

      MongoEngine 可能需要弃用其保存方法,或取消弃用警告,或者可能需要一些其他修复来处理此 PyMongo 更改。我建议您搜索 MongoEngine 的错误跟踪器并报告此问题(如果尚未报告)。

      MongoEngine 错误 - https://github.com/MongoEngine/mongoengine/issues/1491

      【讨论】:

      • 非常感谢,但您能否展示使用 insert_one 而不是保存在我的对象上的示例?我就是不明白
      猜你喜欢
      • 2016-06-08
      • 2012-09-20
      • 2020-11-28
      • 1970-01-01
      • 2012-03-04
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多