热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

数据库的增删改查都先要链接数据库,不然到处都在链接数据库,很烂费资源和性能,今天就把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))

运行结果:

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


版权声明:本文为weixin_44818729原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/weixin_44818729/article/details/110060436
推荐阅读
  • Web动态服务器Python基本实现
    Web动态服务器Python基本实现 ... [详细]
  • 本文探讨了如何通过Service Locator模式来简化和优化在B/S架构中的服务命名访问,特别是对于需要频繁访问的服务,如JNDI和XMLNS。该模式通过缓存机制减少了重复查找的成本,并提供了对多种服务的统一访问接口。 ... [详细]
  • 本文将从基础概念入手,详细探讨SpringMVC框架中DispatcherServlet如何通过HandlerMapping进行请求分发,以及其背后的源码实现细节。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 在 Ubuntu 22.04 LTS 上部署 Jira 敏捷项目管理工具
    Jira 敏捷项目管理工具专为软件开发团队设计,旨在以高效、有序的方式管理项目、问题和任务。该工具提供了灵活且可定制的工作流程,能够根据项目需求进行调整。本文将详细介绍如何在 Ubuntu 22.04 LTS 上安装和配置 Jira。 ... [详细]
  • mysql 授权!!
    为什么80%的码农都做不了架构师?MySQL的权限系统围绕着两个概念:认证-确定用户是否允许连接数据库服务器授权-确定用户是否拥有足够的权限执 ... [详细]
  • 如何在Django框架中实现对象关系映射(ORM)
    本文介绍了Django框架中对象关系映射(ORM)的实现方式,通过ORM,开发者可以通过定义模型类来间接操作数据库表,从而简化数据库操作流程,提高开发效率。 ... [详细]
  • 二维码的实现与应用
    本文介绍了二维码的基本概念、分类及其优缺点,并详细描述了如何使用Java编程语言结合第三方库(如ZXing和qrcode.jar)来实现二维码的生成与解析。 ... [详细]
  • 本文详细介绍了在Windows系统中如何配置Nginx以实现高效的缓存加速功能,包括关键的配置文件设置和示例代码。 ... [详细]
  • 入门指南:使用FastRPC技术连接Qualcomm Hexagon DSP
    本文旨在为初学者提供关于如何使用FastRPC技术连接Qualcomm Hexagon DSP的基础知识。FastRPC技术允许开发者在本地客户端实现远程调用,从而简化Hexagon DSP的开发和调试过程。 ... [详细]
  • 本文详细介绍了如何利用 Bootstrap Table 实现数据展示与操作,包括数据加载、表格配置及前后端交互等关键步骤。 ... [详细]
  • 小编给大家分享一下Vue3中如何提高开发效率,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获, ... [详细]
  • 在尝试通过自定义端口部署Spring Cloud Eureka时遇到了连接失败的问题。本文详细描述了问题的现象,并提供了有效的解决方案,以帮助遇到类似情况的开发者。 ... [详细]
  • 在OpenShift上部署基于MongoDB和Node.js的多层应用程序
    本文档详细介绍了如何在OpenShift 4.x环境中部署一个包含MongoDB数据库和Node.js后端及前端的多层应用程序。通过逐步指导,读者可以轻松完成整个部署过程。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
author-avatar
工商领域LW
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有