NotImplementedError: Database objects do not implement truth value testing or bool(). Please compare with None instead: database is not None

NotImplementedError: Database objects do not implement truth value testing or bool(). Please compare with None instead: database is not None

将 pymongo 从 3.12.1 升级到 4.0.1 时出现此错误。 “NotImplementedError:数据库对象未实现真值测试或 bool()。请改为与 None 进行比较:数据库不是 None” 我正在使用 Python 3.9。 我没有使用 Django 或任何其他包。 如何解决?

显然 API 在版本 4 的 MongoDB 客户端库中发生了变化。从 MongoClient(...) 中获取数据库或集合对象(例如 db_obj)后,您可以不再使用 if db_obj: 并且必须使用 if db_obj is not None:.

所以这个:

mongo_client = MongoClient(...)
# get a database object
db_obj = mongo_client['mydb']
if db_obj:
    # get a collection
    collection_obj = db_obj['my_collection']
    if collection_obj:
        # do a query
        # ...

必须更改为:

mongo_client = MongoClient(...)
# get a database object
db_obj = mongo_client['mydb']
if db_obj is not None:      <-- here
    # get a collection
    collection_obj = db_obj['my_collection']
    if collection_obj is not None:      <-- here
        # do a query
        # ...

我在你遇到同样的问题后一天就遇到了同样的问题。旧模式似乎仍然适用于测试查询或插入的结果对象,但您可能也想更新它们以防将来弃用它。