NotImplementedError:数据库对象未实现真值测试或布尔().请改为与None进行比较:数据库不是None



当pymongo从3.12.1升级到4.0.1时,我收到了这个错误。"NotImplementedError:数据库对象未实现真值测试或布尔((。请改为与None进行比较:数据库不是None";我使用的是Python 3.9。我没有使用Django或任何其他包。如何解决?

显然,在版本4中,MongoDB客户端库中的API发生了变化。从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
# ...

就在你这么做的第二天,我也遇到了同样的问题。旧模式似乎仍然适用于从查询或插入中测试结果对象,但您可能也需要更新这些对象,以防将来不推荐使用。

相关内容

最新更新