In [165]:
# Author: Jason Lu
import pymongo
from threading import Thread, Lock
class ManagerDBMongo(object):
_instance_lock = Lock() # 定义锁
_ip = ''
_port = 27017
_db = ''
_col = ''
_client = []
def __new__(cls, *args, **kwargs):
if not hasattr(ManagerDBMongo, "_instance"):
with ManagerDBMongo._instance_lock:
if not hasattr(ManagerDBMongo, "_instance"):
ManagerDBMongo._instance = object.__new__(cls)
return ManagerDBMongo._instance
@classmethod
def init_db(cls, ip='localhost', port=27017, db_name=None, db_collection=None):
cls._ip = ip
cls._port = port
cls._client = pymongo.MongoClient(cls._ip, cls._port)
print("1111")
if db_name is None:
return False
if db_collection is None:
return False
cls._db = db_name
cls._col = db_collection
cls.init_database(db_name)
print("222")
cls.init_collection(db_collection)
print(">>:finish init database")
return True
@classmethod
def init_database(cls, database):
try:
cls.collection = cls._client[database]
except Exception as e:
print(e)
return False
else:
return True
@classmethod
def init_collection(cls, collection):
try:
cls._ = cls._db_database[collection]
except Exception as e:
print(e)
return False
else:
return True
@classmethod
def get_collection(cls, collection):
return cls.collection
In [166]:
ManagerDBMongo.init_db(db_name="mydatabase", db_collection="users")
collection_users = ManagerDBMongo.get_collection("users")
print(collection_users)
# obj1 = ManagerDBMongo.init_ip_port()
# print(ManagerDBMongo.get_ip_port())
# ManagerDBMongo.init_db_collection(ManagerDBMongo, "mydatabase", "users")
In [ ]:
In [ ]: