helper.py
importview codepymysql
from settings import
config
defconnect():
conn =config.pool.connection()
cursor = conn.cursor(cursor=pymysql.cursors.dictcursor) #
以 字典的方式 顯示
return
conn,cursor
defconnect_close(conn,cursor):
cursor.close()
conn.close()
deffetch_all(sql,args):
conn,cursor =connect()
cursor.execute(sql, args)
record_list =cursor.fetchall()
connect_close(conn,cursor)
return
record_list
deffetch_one(sql, args):
conn, cursor =connect()
cursor.execute(sql, args)
result =cursor.fetchone()
connect_close(conn, cursor)
return
result
definsert(sql, args):
conn, cursor =connect()
row =cursor.execute(sql, args)
conn.commit()
connect_close(conn, cursor)
return row
settings.py
from dbutils.pooleddb importview codepooleddb, shareddbconnection
import
pymysql
#class
config(object):
salt = b"
sdf1123df
"secret_key = '
asdf123sdfsdfsdf
'max_content_length = 1024 * 1024 * 7pool =pooleddb(
creator=pymysql, #
使用鏈結資料庫的模組
maxconnections=6, #
連線池允許的最大連線數,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='
123456',
database='
db2'
, charset='
utf8
')
views.py
@account.route('view code/login/
', methods=['
get', '
post'])
deflogin():
'''登陸
:return:
'''if request.method == '
get'
:
return render_template('
login.html')
username = request.form.get('
user')
password = request.form.get('
pwd'
) pwd_md5 =md5(password)
data = helper.fetch_one("
select id,nickname from userinfo where user=%s and pwd =%s
", (username, pwd_md5))
ifnot
data:
return render_template('
login.html
', error='
使用者名稱密碼錯誤')
#session['user_info'] = data
session['
user_info
'] =
return redirect('
/home/
')
mysql資料連線池
示例 usr bin python coding utf 8 time 2017 11 21 0021 10 52 author liaochao file demo2.py import mysqldb from dbutils.pooleddb import pooleddb db config...
mysql 執行緒池 Mysql 執行緒池
why 在5.6以前,mysql會對每個連線建立乙個執行緒,請求結束後銷毀執行緒。在高併發的情況下,為了避免頻繁建立和釋放連線,可以通過thread cache將執行緒快取起來,請求來了先嘗試從cache中獲取,重複利用執行緒資源。問題在低併發的情況下,thread cache可以成為乙個有效的優化...
mysql 資料預熱 mysql預熱緩衝池
在資料庫壓力很大的情況下,重啟完資料庫,通過手工執行下列語句,把熱資料載入到innodb buffer pool緩衝池中進行預熱,從而避免早高峰連線數公升高,程式報錯。select count from user select count from 在mysql5.6裡為了解決上述問題,提供了乙個新...