mongo连接的上下文管理器即使在关闭连接后也会给出查询结果

2024-10-01 09:15:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用python3为mongoDB连接编写上下文管理器。下面是代码

from pymongo import MongoClient


class MongoDBConnectionManager(object):
    def __init__(self, db, collection):
        self.db = db
        self.collection = collection
        self.connection = None

    def __enter__(self):
        self.connection = MongoClient('localhost', '27017')
        self.collection.closed()  # closing it to see if i get the error or not
        db = self.connection[self.db]
        collection_connect = db[self.collection]
        return collection_connect

    def __exit__(self, exc_type, exc_value, exc_traceback):
        self.connection.close()


with MongoDBConnectionManager('my_db', 'my_collection') as mongo:
    data = mongo.find_one({'_id': 1}) 
    print(data)

我的问题是,在{}中,就在{}之后,我写了{},假设不是关闭连接并在{}行中给出错误。或者它再次创建了新的连接

我做错什么了吗?这是创建和关闭mongoDB连接的正确方法吗?另外,如何确认连接已关闭

我知道MongoClient也可以作为上下文管理器使用。但我想知道定制上下文管理器的功能

任何帮助都将不胜感激

提前谢谢


Tags: self管理器dbdatamymongomongodbdef
1条回答
网友
1楼 · 发布于 2024-10-01 09:15:41

你不必担心这些;MongoClient在数据库级别为您处理连接池。无需打开和关闭与数据库、集合或任何内容的多个连接;只是:

client = MongoClient('localhost', 27017)
my_db = client['my_db']
data = my_db.my_collection.find_one({'_id': 1})
print(data)

相关问题 更多 >