-
安裝
-
pip install DBUtils -i https://pypi.douban.com/simple
-
-
-
# 數據庫鏈接池
-
# -*- coding: utf-8 -*-
-
import pymysql
-
from DBUtils.PooledDB import PooledDB
-
POOL = 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 ..."] 好比設置數據庫的開始時間 set firstday=3
-
-
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="192.168.32.71",
-
port=3306,
-
user="root",
-
password="redhat",
-
charset="utf8",
-
db="my_sql"
-
)
-
-
# 使用
-
conn = POOL.connection() # pymysql - conn
-
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
-
-
res = cur.execute("select * from name")
-
print(cur.fetchall())
-
# [{'name': 'peach', 'id': 1, 'age': 25}, {'name': 'taoiz', 'id': 2, 'age': 23}]
-
-
# 關閉
-
cur.close()
-
conn.close()
-
from dbpool import POOL
-
import pymysql
-
-
def create_conn():
-
conn = POOL.connection()
-
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
-
return conn,cursor
-
-
def close_conn(conn,cursor):
-
cursor.close()
-
conn.close()
-
-
def insert(sql,args):
-
conn,cursor = create_conn()
-
res = cursor.execute(sql,args)
-
conn.commit()
-
close_conn(conn,cursor)
-
return res
-
-
def fetch_one(sql,args):
-
conn,cursor = create_conn()
-
cursor.execute(sql,args)
-
res = cursor.fetchone()
-
close_conn(conn,cursor)
-
return res
-
-
def fetch_all(sql,args):
-
conn,cursor = create_conn()
-
cursor.execute(sql,args)
-
res = cursor.fetchall()
-
close_conn(conn,cursor)
-
return res
-
-
# sql = "insert into users(name,age) VALUES (%s, %s)"
-
-
# insert(sql,("mjj",9))
-
-
sql = "select * from users where name=%s and age=%s"
-
-
print(fetch_one(sql,("mjj",9)))