2
我正在做一個Python
OOP項目。我必須處理MongoDB交互,但我不想使用ODM
,比如mongoengine
。Python OOP:如何與所有類共享一個MongoDB連接
我想要的是與所有必須與之交互的類共享一個主要的Mongo連接。我認爲使用主DB類可能是一個好主意,我有兩個解決方案。
解在類A級 連接
mydb.py
from pymongo import MongoClient
class MyMongoDB(object):
_client = MongoClient('localhost', 27017)
db = _client['name_of_the_db']
而在其他類:
from mydb import MyMongoDB
class Foo(object):
_db_collection = MyMongoDB.db.foo_collection
def __init__(self):
pass
def set_data(self, data):
Foo._db_collection.insert_one(data)
解在實例級別甲 連接
mydb.py
from pymongo import MongoClient
class MyMongoDB(object):
def __init__(self):
_client = MongoClient('localhost', 27017)
db = _client['name_of_the_db']
而在其他類:
from mydb import MyMongoDB
class Foo(object):
_db_collection = MyMongoDB().db.foo_collection
def __init__(self):
pass
def set_data(self, data):
Foo._db_collection.insert_one(data)
在液A我有一個主要的連接,即使我導入的MongoDB類的很多模塊。
在溶液B我有一個新的實例爲每個進口
我認爲液A是這樣的伎倆的正確方法。不是嗎?他們是更好的方法嗎?
哇!所以我不需要特殊的課程!只需要一個共享變量,我必須導入。而已!對? – floatingpurr
這是正確的。 –