使用PyMongo无法打印数据库对象,报'Database object is not callable'错误
问题排查与解决
错误原因
你的报错源于pymongo版本兼容性问题:
- 旧版pymongo(3.0之前)中,
client.database_names()是获取数据库列表的有效方法; - 但在pymongo 3.0及以上版本中,该方法已被废弃并移除。此时访问
client.database_names会被MongoClient解析为获取名为database_names的数据库对象,而数据库对象不可被调用,加括号执行时就会抛出TypeError: 'Database' object is not callable错误。
解决方案
直接使用新版本pymongo提供的替代方法,两种常用方式如下:
方法1:直接获取数据库名称列表
将代码中的client.database_names()替换为client.list_database_names():
import pymongo client = pymongo.MongoClient("127.0.0.1", 27017) databases = client.list_database_names() print("The databases in the MongoDB server are:") print(databases) client.close()
方法2:获取完整数据库信息再提取名称
如果需要数据库的更多元数据(如存储大小),可以用list_databases()返回包含详细信息的字典列表,再提取名称:
import pymongo client = pymongo.MongoClient("127.0.0.1", 27017) db_info_list = client.list_databases() databases = [db["name"] for db in db_info_list] print("The databases in the MongoDB server are:") print(databases) client.close()
验证当前pymongo版本(可选)
通过以下代码可以查看当前使用的pymongo版本:
import pymongo print(pymongo.__version__)
内容的提问来源于stack exchange,提问作者Balaji Shankar
相关产品推荐
相关产品推荐

