資料庫的增刪改查都先要鏈結資料庫,不然到處都在鏈結資料庫,很爛費資源和效能,今天就把mongo的連線池的單例模式封裝了一下,希望大家多多指教:
# -*- coding: utf-8 -*-
""" @time : 2020/11/23 16:36
@athor : linxiao
@功能 :
"""import os
import sys
from pymongo import mongoclient
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=
# 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單例模式繼承 python單例模式
我們可以使用 new 這個特殊方法。該方法可以建立乙個其所在類的子類的物件。更可喜的是,我們的內建 object 基類實現了 new 方法,所以我們只需讓 sing 類繼承 object 類,就可以利用 object 的 new 方法來建立 sing 物件了。classsing object def...
python 的單例模式
單例模式,通俗的理解就是單個例項物件的模式,就是說這個類只能有乙個例項物件 我們先來看看它的應用場景,再看怎麼實現它 資源共享的情況下,避免由於資源操作時導致的效能或損耗等。如日誌檔案,應用配置。控制資源的情況下,方便資源之間的互相通訊。如執行緒池等。1.的計數器 2.應用配置 3.多執行緒池 4....
python的單例模式
在python面試中必問的兩組 python的單例模式 python的單例模式 單例模式 比如你在某地工作,你有回出差在附近。那你是不可能住 就在那裡買一套房吧?而你回選擇力公司附近買一套房就好。單例模式如此,就是在乙個類中定義乙個私有屬性例項化共接下來呼叫,不需要建立更多的例項來浪費資源。單例模式...