美文网首页Python
python的单例模式 连接mongo数据库

python的单例模式 连接mongo数据库

作者: 程序里的小仙女 | 来源:发表于2020-11-23 17:31 被阅读0次

数据库的增删改查都先要链接数据库,不然到处都在链接数据库,很烂费资源和性能,今天就把mongo的连接池的单例模式封装了一下,希望大家多多指教:

# -*- coding: utf-8 -*-
"""
 @Time   : 2020/11/23 16:36 
 @Athor   : LinXiao
 @功能   :
"""
import os
import sys

from pymongo import MongoClient

sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))


class MongoDBClient(object):
    # 饿汉式 单例模式
    def __new__(cls):
        if not hasattr(cls, 'instance'):
            cls.instance=super(MongoDBClient, cls).__new__(cls)
        return cls.instance

    # 代理ip Redis 连接池
    def __init__(self):
        # uri='mongodb://账号:密码@128.777.244.19:27017/admin'
        # self.mgdb=MongoClient(uri, connect=False, maxPoolSize=2000)
        local_host='localhost'
        local_port=27017
        self.local_client=MongoClient(local_host, local_port, connect=False, maxPoolSize=2000)

        # 线上mongo验证
        online_host="145455.12.122线上mongo地址"
        online_port=27017
        client=MongoClient(online_host, online_port,connect=False, maxPoolSize=2000)
        db_user='dbwd'
        password='fpy#线上mongo密码'
        db=client.test                 # 注意:# 先连接系统默认数据库admin
        db.authenticate(db_user, password, mechanism='SCRAM-SHA-1')
        self.online_client=client

    def getMongo_Local_Client(self):
        return self.local_client

    def getMongo_Online_Client(self):
        return self.online_client


# if __name__ == '__main__':
#     mongo=MongoDBClient().getMongo_Online_Client()
#     mongo_insert=mongo['test']["test111111"]
#     data={"linxiao": "handsome"}
#     mongo_insert.insert_one(data)
#
# 类方法继承
class AA(MongoDBClient):
    def __init__(self):
        super().__init__()

    # def get_data(self):



if __name__ == '__main__':
    a1=AA()
    a2=AA()
    print(id(a1), id(a2))

运行结果:



说明是同一个对象,单利完成!

相关文章

  • python的单例模式 连接mongo数据库

    数据库的增删改查都先要链接数据库,不然到处都在链接数据库,很烂费资源和性能,今天就把mongo的连接池的单例模式封...

  • 34-单例模式

    单例模式 python的单例模式就是一个类的实例只能自始自终自能创建一次。应用场景比如说数据库的连接池。 单例设计...

  • 你说你熟悉java设计模式,那单例模式的这几种创建方式你都知道吗

    单例模式使用案例 数据库的连接池; Spring中的Bean默认也是单例的; 单例模式的特性 将构造函数私有化 在...

  • 单例模式和工厂模式

    单例模式 数据库连接可以使用单例模式。。。单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便...

  • App接口开发

    单例模式连接数据库 开发首页接口方式 开发版本升级接口

  • PHP设计模式

    1,单例模式(Singleton):用于为一个类生成一个唯一的对象。 最常用的地方是数据库连接。 使用单例模式生成...

  • java单例模式

    概念   单例模式:单例模式核心只需要new一个实例对象的模式,比如数据库连接,在线人数等,一些网站上看到的在线人...

  • 通过单例模式封装Mysql单例

    1.1.1 思路 1、 单例模式 2、 连接数据库 a) 初始化参数 b) 连接数据库 3、 对数据表操作 a) ...

  • Head First设计模式之单例模式

    单例模式的鼎鼎大名很早以前都听说过了,数据库的连接池就是采用了单例模式,但是一直不知道单例模式到底是什么,我当时想...

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

网友评论

    本文标题:python的单例模式 连接mongo数据库

    本文链接:https://www.haomeiwen.com/subject/rlyviktx.html