游標
游標是系統為使用者開設的乙個資料緩衝區,存放 sql 語句的執行結果,用法如下:
in [1]: import mysqldb
in [2]: c = mysqldb.connect(user='root', passwd='pzk123', db='mysql') # 連線資料庫
in [3]: cus = c.cursor() # 建立乙個游標物件
in [4]: cus.execute('select * from user;') # 使用execute()方法可以執行sql語句,執行後的結果會存在緩衝區
out[4]: 4l
in [5]: result1 = cus.fetchone() # 可以使用fetchone()來檢視緩衝區的一條記錄
in [6]: result2 = cus.fetchmany(3) # 可以使用fetchmany()來檢視緩衝區的多條記錄
in [7]: result3 = cus.fetchall() # 可以使用fetchall()來檢視所有的記錄
示例:#!/usr/bin/env python
import mysqldb
def connect_mysql():
db_config =
c = mysqldb.connect(**db_config)
return c
if __name__ == '__main__':
c = connect_mysql() # 首先連線資料庫
cus = c.cursor() # 生成游標物件
sql = 'drop database test;' # 定義要執行的sql語句
try:
cus.execute(sql) # 執行sql語句
c.commit() # 如果執行成功就提交事務
except exception as e:
c.rollback() # 如果執行失敗就回滾事務
raise e
finally:
c.close() # 最後記得關閉資料庫連線
from dbutils.pooleddb import pooleddb
db_config =
pool = pooleddb(mysqldb, 5, **db_config) # 5為連線池裡的最少連線數
conn = pool.connection() # 以後每次需要資料庫連線就是用connection()函式獲取連線就好了
cur = conn.cursor()
sql = "select * from tmp;"
r = cur.execute(sql)
r = cur.fetchall()
print(r)
cur.close()
conn.close()
pooleddb的引數:
1. mincached,最少的空閒連線數,如果空閒連線數小於這個數,pool會建立乙個新的連線
2. maxcached,最大的空閒連線數,如果空閒連線數大於這個數,pool會關閉空閒連線
3. maxconnections,最大的連線數,
4. blocking,當連線數達到最大的連線數時,在請求連線的時候,如果這個值是true,請求連線的程式會一直等待,直到當前連線數小於最大連線數,如果這個值是false,會報錯,
5. maxshared 當連線數達到這個數,新請求的連線會分享已經分配出去的連線
在uwsgi中,每個http請求都會分發給乙個程序,連線池中配置的連線數都是乙個程序為單位的(即上面的最大連線數,都是在乙個程序中的連線數),而如果業務中,乙個http請求中需要的sql連線數不是很多的話(其實大多數都只需要建立乙個連線),配置的連線數配置都不需要太大。
連線池對效能的提公升表現在:
1.在程式建立連線的時候,可以從乙個空閒的連線中獲取,不需要重新初始化連線,提公升獲取連線的速度
2.關閉連線的時候,把連線放回連線池,而不是真正的關閉,所以可以減少頻繁地開啟和關閉連線
設計表結構
在操作設計資料庫之前,我們先要設計資料庫表結構,根據實際業務之間物件的關係,我們先來分析各個主體他們直接有什麼屬性,並確定表結構,在實際開發過程中,根據自己的業務需要和屬性,設計不同的表結構。
MySQL 游標 游標
游標cursor是用來儲存查詢結果集的 資料型別 在儲存過程和函式中可以使用游標對結果集進行迴圈的處理。游標的使用包括游標的宣告 open fetch 和 close,其語法分別如下 宣告游標 declare cursor name cursor for select statement open ...
mysql游標型別 MySQL 游標
drop procedure if exists processorders create procedure processorders begin declare done boolean default 0 declare a int declare b varchar 20 定義游標遍歷時,...
mysql隱式游標 MYSQL 游標 動態游標示例
mysql沒有隱式和顯式游標之分,所用的游標都是顯式游標,也就是必須要進行定義游標變數,然後按照正規的流程使用,開啟 遍歷 關閉。以下是具體的使用方法。游標定義 1.declare cursor name cursor for select statement 游標操作 open 開啟游標 1.op...