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