python 基礎 9 5 資料庫連線池

2022-09-16 07:00:13 字數 2372 閱讀 9386

一. 資料庫連線池

python 程式設計中可以使用mysqldb 進行資料庫的連線及諸如查詢,插入,更新等操作,但是每次連線mysql 資料庫請求時,都是獨立的去請求訪問,相當浪費資源,而且訪問數量達到一定書力量時,對mysql的效能會產生較大的影響。因此,實際使用中,通常會使用資料庫的連線池技術,來訪問資料庫達到資源復用的目的。

python 的資料庫連線池包  dbutils:

dbutils 是一套python 資料庫連線池包,並允許對非執行緒安全的資料庫介面進行執行緒安全包裝。dbutils 來自 webware for  pthon

dbutils 提供兩種外部介面:

* persistentdb:提供執行緒專用的資料庫連線,並自動管理連線。

*pooleddb: 提供執行緒間可共享的資料庫連線,並自動管理連線。

或者使用:pip install dbutils

#/usr/bin/python

#-*- coding:utf-8 -*-

#@time   :2017/11/22 15:43

#@auther :liuzhenchuan

#@file   :資料庫連線池.py

import mysqldb

from dbutils.pooleddb import pooleddb

db_config=

pool = pooleddb(creator=mysqldb,mincached=5,blocking=true,**db_config)

if __name__ == '__main__':

cnx = pool.connection()

cus = cnx.cursor()

sql = 'select *from test;'

try:

cus.execute(sql)

result = cus.fetchall()

print result

cus.close()

cnx.commit

except exception as e:

raise e

finally:

cnx.close()

>>>

((100l,), (99l,), (95l,), (95l,), (98l,), (97l,), (96l,), (95l,), (100l,), (101l,), (102l,), (103l,), (104l,), (105l,), (106l,), (107l,), (108l,), (109l,), (110l,), (111l,), (112l,), (113l,), (114l,), (115l,), (116l,), (117l,), (118l,), (119l,), (120l,), (121l,), (122l,), (123l,), (124l,), (125l,), (126l,), (127l,), (128l,), (129l,))

引數說明:

pool = pooleddb(mysqldb,5, **db_config)  #5 為連線池裡的最少連線數

cnx = pool.connection()   # 以後每次需要資料庫連線就是用connection() 函式獲取連線就好了

cus = cnx.cursor()

cus = cnx.cursor()

sql = 'select *from test;'

try:

cus.execute(sql)

result = cus.fetchall()

print result

cus.close()

cnx.commit

pooleddb 的引數:

1.mincached,最少的空閒連線數,如果空閒連線數小於這個數,pool 會建立乙個新的連線

2.maxcached,最大的空閒連線數,如果空閒連線數大於這個數,pool 會關閉空閒連線

3.maxconnections,最大的連線數。

4.blocking,當鏈結數達到最大的鏈結數時,在請求連線的時候,如果這個值是true,請求連線的程式會一直等待,直到當前連線數小於最大連線數,如果這個值是flase,會報錯

5.maxshared 當連線數達到這個數,新請求的鏈結會分享已經分配出去的鏈結。

在uwsgi 中,每個httpd請求都會分發給乙個程序,連線池中配置的鏈結數都是乙個程序為單位的(即上面的最大連線數,都是在乙個程序中的鏈結數),而如果業務中,乙個httpd請求中需要的sql連線數不是很多的話(其實大多數都只需要建立乙個連線),配置的鏈結數配置都不需要太大。

連線池對效能的提公升變現在:

1.在程式建立連線的時候,可以從乙個空閒的鏈結中獲取,不需要重新初始化連線,提公升獲取鏈結的速度

2.關閉連線的時候,把鏈結放回連線池,而不是真的關閉,所以可以減少頻繁的開啟和關閉連線

資料庫 資料庫基礎5 表連線 多表連線

2 多表連線 表的數量 2 2 外部連線 前提 有時需要的資料不止在一張表中,需要多個表做結合的查詢就可以用表連線實現 1 第一種 where連線 select 表名1.列名1,表名2.列名1,表名1.列名2,表名2.列名2 from 表名1,表名2 where 表名1.列名1 表名2.列名1 2 ...

Python庫之資料庫連線

資料庫連線可用於連線眾多資料庫以及訪問通用資料庫介面,可用於資料庫維護 管理和增 刪 改 查等日常操作。1.mysql connector python 型別 第三方庫 描述 mysql官方驅動連線程式 推薦度 13.bsddb3 型別 第三方庫 描述 berkeley db連線庫 15.dbhas...

python連線MySQL資料庫

模組功能 connect 方法 connect 方法用於連線 資料庫,返回乙個資料庫連線物件。如果要連線乙個位於host.remote.com伺服器上名為fourm的mysql資料庫,連線串可以這樣寫 db mysqldb.connect host remote.com user user pass...