最近需要做乙個頻繁運算元據庫的應用,如果頻繁的建立、關閉連線則會浪費很大部分資源,於是在網上搜尋連線池的用法,如下:
pip install pymysql
import pymysql
if __name__== "__main__":
db = pymysql.connect(host="資料庫位址", user="testuser", password="test123",database="testdb",charset="utf8")
cursor = db.cursor()
cursor.execute("select version()")
data = cursor.fetchone()
cursor.close()
db.close()
import pymysql
from dbutils.pooled_db import pooleddb
if __name__== "__main__":
config =
pool = pooleddb(**config)
conn = pool.connection()
cursor = conn.cursor()
cursor.execute("select version()")
cursor.close()
conn.close()
如此就可以使用連線池建立連線了,
注意:此處的conn.close()並非真正的關閉連線,而是將連線返回給連線池。所以消耗的資源更小。
雖然這樣**就完成了,但是在實際應用場景中肯定是會做各種查詢和插入的,那麼多條語句每次都要關閉和重新建立連線是否太麻煩了呢。
問題總能解決的,只要使用裝飾器就能解決這個問題
import pymysql
from dbutils.pooled_db import pooleddb
class mysqlpool:
config =
pool = pooleddb(**config)
def __enter__(self):
self.conn = mysqlpool.pool.connection()
self.cursor = self.conn.cursor()
return self
def __exit__(self, type, value, trace):
self.cursor.close()
self.conn.close()
def db_conn(func):
with mysqlpool() as db:
result = func(db, *args, **kw)
return result
# 實際應用的地方
class mysql_db_manage:
"""table: register_phone"""
@staticmethod
@db_conn
def select_all_register_phone(db):
q = "select *** from ***"
db.cursor.execute(q)
result = db.cursor.fetchall()
return result
python操作mysql之mysql詳解
import pymysql 第一步 連線資料庫 返回乙個connection的連線物件 conn pymysql.connect host 127.0.0.1 port 3306,user root password charset utf8 database day36 1 第二步 從連線物件中...
Python之MySQL基本操作
import pymysql 開啟資料庫鏈結 conn pymysql.connect localhost user root password root db testdb 游標 cursor conn.cursor 建立資料庫 cursor.execute create database if ...
MySQL 之 表的內連和外連
資料庫中表的連線分為內連 1.內連線 內連線實際上就是利用where子句對兩種表形成的笛卡兒積進行篩選。語法 select 字段 from 表1 inner join 表2 on 連線條件 and 其他條件 eg 顯示smith的名字和部門名稱 用標準的內連線寫法 select ename,dnam...