day21 遊標 mysql連線池 設計表結構

2023-01-27 10:11:14 字數 2893 閱讀 3003

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

python的資料庫連線池包 dbutils:
dbutils是一套python資料庫連線池包,並允許對非執行緒安全的資料庫介面進行執行緒安全包裝。dbutils來自webware for python。
dbutils提供兩種外部介面:
* persistentdb :提供執行緒專用的資料庫連線,並自動管理連線。
* pooleddb :提供執行緒間可共享的資料庫連線,並自動管理連線。
或者使用
pip install dbutils
1

import

mysqldb

2from dbutils.pooleddb import

pooleddb

3 db_config =

1112

13 pool = pooleddb(mysqldb, 5, **db_config) #

5為連線池裡的最少連線數

1415 conn = pool.connection() #

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

16 cur =conn.cursor()

17 sql = "

select * from tmp;

"18 r =cur.execute(sql)

19 r =cur.fetchall()

20print

(r)21

cur.close()

22 conn.close()

pooleddb的引數:
1. mincached,最少的空閒連線數,如果空閒連線數小於這個數,pool會建立一個新的連線
2. maxcached,最大的空閒連線數,如果空閒連線數大於這個數,pool會關閉空閒連線
3. maxconnections,最大的連線數,
4. blocking,當連線數達到最大的連線數時,在請求連線的時候,如果這個值是true,請求連線的程式會一直等待,直到當前連線數小於最大連線數,如果這個值是false,會報錯,
5. maxshared 當連線數達到這個數,新請求的連線會分享已經分配出去的連線

在uwsgi中,每個http請求都會分發給一個程序,連線池中配置的連線數都是一個程序為單位的(即上面的最大連線數,都是在一個程序中的連線數),而如果業務中,一個http請求中需要的sql連線數不是很多的話(其實大多數都只需要建立一個連線),配置的連線數配置都不需要太大。
連線池對效能的提升表現在:
1.在程式建立連線的時候,可以從一個空閒的連線中獲取,不需要重新初始化連線,提升獲取連線的速度
2.關閉連線的時候,把連線放回連線池,而不是真正的關閉,所以可以減少頻繁地開啟和關閉連線
現在,我們來詳細講講python運算元據庫的細節,在操作設計資料庫之前,我們先要設計資料庫表結構,我們就來分析分析經典的學生,課程,成績,老師這幾者他們之間的關係,我們先來分析各個主體他們直接有什麼屬性,並確定表結構,在實際開發過程中,根據自己的業務需要和屬性,設計不同的表結構,以下是我設計的表結構:

student

欄位名

型別

是否為空

主鍵

描述

stdid

int否

是學生id

stdname

varchar(100)

否學生姓名

gender

enum('m', 'f')是性別

agetinyint是年齡

course

欄位名

型別

是否為空

主鍵

描述

couid

int否

是課程id

cname

varchar(50)

否課程名字

tidint

否老師id

score

欄位名

型別

是否為空

主鍵

描述

sidint否是

分數id

stdid

int否

學生id

couid

int否

課程id

grade

int否

分數teacher

欄位名

型別

是否為空

主鍵

描述

tidint否是

老師id

tname

varcher(100)

否老師名字

360mysql連線池 資料庫連線池

資料庫連線池 一個用來存放資料庫連線的容器。當被建立時,容器初始化,建立連線物件。當使用者需要訪問資料庫是,從容器中獲取連線物件,在訪問完畢以後,歸還連線物件到連線池中。使用資料庫連線池的好處是 節約資源,使用者訪問更加高效。datasource 該介面為資料庫連線池應該實現的標準介面 getcon...

Jedis程式設計設計 連線池

jedis作為redis的最佳客戶端,它提供了連線池的特性,連線池 在通常情況下可以有效的提高應用的通訊能力,並且這是一種良好的設計模式。jedis的連線池設計基於apache commons pool原生庫,僅作了簡單的封裝 在本文中將介紹如何使用jedispool進行程式設計。一.連線池基本引數...

mysql連線池用法 mysql連線池的使用經驗

準備檔案 在web.xml裡新增 複製 如下 servletconfigurator org.logicalcobwebs.proxool.configuration.servletconfigurator xmlfile web inf db.xml proxool org.logicalcobw...