Python操作Mysql之連線池的用法

2021-10-25 04:05:00 字數 1735 閱讀 5708

最近需要做乙個頻繁運算元據庫的應用,如果頻繁的建立、關閉連線則會浪費很大部分資源,於是在網上搜尋連線池的用法,如下:

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...