python的單例模式 連線mongo資料庫

2021-10-10 19:22:32 字數 1896 閱讀 2092

資料庫的增刪改查都先要鏈結資料庫,不然到處都在鏈結資料庫,很爛費資源和效能,今天就把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的單例模式 單例模式 比如你在某地工作,你有回出差在附近。那你是不可能住 就在那裡買一套房吧?而你回選擇力公司附近買一套房就好。單例模式如此,就是在乙個類中定義乙個私有屬性例項化共接下來呼叫,不需要建立更多的例項來浪費資源。單例模式...