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")


1111
222
string indices must be integers
>>:finish init database
Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mydatabase')

In [ ]:


In [ ]: