紅酥手,黃縢酒,滿城春色宮牆柳。東風惡,歡情薄。一懷愁緒,幾年離索。錯、錯、錯。
春如舊,人空瘦,淚痕紅浥鮫綃透。桃花落,閒池閣。山盟雖在,錦書難託。莫、莫、莫!
mysql資料庫的建立在這就省略了!!!
from flask import flask
import pymysql
def index():
# 鏈結資料庫
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password='', database='homework', charset='utf8')
# 建立指標
cursor = conn.cursor()
# 執行sql語句
cursor.execute("select * from class")
# 獲取資料
result = cursor.fetchall()
# 關閉指標
cursor.close()
# 關閉鏈結
conn.close()
print(result)
return "執行成功"
if __name__ == '__main__':
這種方式每次請求,反覆建立資料庫鏈結,多次鏈結資料庫會非常耗時
from flask import flask
import pymysql
# 鏈結資料庫
conn = pymysql.connect(host="127.0.0.1", port=3306, user='root', password='', database='homework', charset='utf8')
def index():
# 建立指標
cursor = conn.cursor()
# 執行sql語句
cursor.execute("select * from class")
# 獲取資料
result = cursor.fetchall()
# 關閉指標
cursor.close()
# 關閉鏈結
conn.close()
print(result)
return "執行成功"
if __name__ == '__main__':
如果是單執行緒,這樣就可以,但是如果是多執行緒,就得加把鎖。否則資料就不安全了!
from flask import flask
import pymysql
from dbutils.pooleddb import pooleddb
pool = pooleddb(
creator=pymysql, # 使用鏈結資料庫的模組
maxconnections=10, # 連線池允許的最大連線數,0和none表示不限制連線數
mincached=2, # 初始化時,鏈結池中至少建立的空閒的鏈結,0表示不建立
maxcached=5, # 鏈結池中最多閒置的鏈結,0和none不限制
maxshared=3, # 鏈結池中最多共享的鏈結數量,0和none表示全部共享。ps: 無用,因為pymysql和mysqldb等模組的 threadsafety都為1,
# 所有值無論設定為多少,_maxcached永遠為0,所以永遠是所有鏈結都共享。
blocking=true, # 連線池中如果沒有可用連線後,是否阻塞等待。true,等待;false,不等待然後報錯
maxusage=none, # 乙個鏈結最多被重複使用的次數,none表示無限制
setsession=, # 開始會話前執行的命令列表。如:["set datestyle to ...", "set time zone ..."]
ping=0,
# ping mysql服務端,檢查是否服務可用。
# 如:0 = none = never,
# 1 = default = whenever it is requested,
# 2 = when a cursor is created,
# 4 = when a query is executed,
# 7 = always
host='127.0.0.1',
port=3306,
user='root',
password='',
database='homework',
charset='utf8'
)def get_conn():
"""連線資料庫
:return: conn, cursor
"""conn = pool.connection()
cursor = conn.cursor(pymysql.cursors.dictcursor)
return conn, cursor
def reset_conn(conn, cursor):
""":param conn: 資料庫連線
:param cursor: 資料庫指標
:return: null
"""cursor.close()
conn.close()
def fetch_all(sql, args):
""":param sql: sql語句
:param args: sql語句的引數
:return: 查詢結果
"""conn, cursor = get_conn()
cursor.execute(sql, args)
result = cursor.fetchall()
reset_conn(conn, cursor)
return result
def index():
res = fetch_all("select * from class", ())
print(res)
return "執行成功"
if __name__ == '__main__':
python資料庫連線工具DBUtils
dbutils是乙個允許在多執行緒python應用和資料庫之間安全及高效連線的python模組套件。dbutils套件包含兩個模組子集,乙個適用於相容db api 2介面的模組,乙個適用於pygresql的模組。dbutils.pooleddb是池化資料庫連線中非常基礎的一種實現。相較於pooled...
DBUtils資料庫連線池
使用資料庫連線池技術,可以重複使用多個資料庫連線,避免每次執行資料庫操作都建立連線和關閉連線,也避免了大型應用同時占用多個資料庫連線。以連線mysql為例 import pymysql from dbutils.pooleddb import pooleddb pool pooleddb creat...
DBUtils資料庫連線池
使用資料庫連線池技術,可以重複使用多個資料庫連線,避免每次執行資料庫操作都建立連線和關閉連線,也避免了大型應用同時占用多個資料庫連線。以連線mysql為例 import pymysql from dbutils.pooleddb import pooleddb pool pooleddb creat...