MongoDB多数据源配置与切换
from pymongo import MongoClient
from contextlib import contextmanager
class MongoDBManager:
def __init__(self, uri, db_name):
self.uri = uri
self.db_name = db_name
self.client = MongoClient(uri)
self.db = self.client[db_name]
@contextmanager
def switch_collection(self, collection_name):
"""
切换到指定的集合(collection)并执行with块中的代码。
"""
collection = self.db[collection_name]
yield collection
# 执行完with块中的代码后,可以添加自定义的收尾工作,例如记录日志等
# 使用示例
mm = MongoDBManager('mongodb://localhost:27017', 'test_db')
with mm.switch_collection('users') as users_collection:
# 在这里写操作users_collection的代码
print(list(users_collection.find()))
# 切换到另一个集合
with mm.switch_collection('products') as products_collection:
# 在这里写操作products_collection的代码
print(list(products_collection.find()))
这个代码示例展示了如何使用上下文管理器来切换MongoDB中的集合(collection),并在一个with语句块内执行相关操作。这样可以避免重复连接数据库并指定集合,使代码更加简洁和高效。
评论已关闭