一. 資料庫連線池
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...