最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python封裝MySQL操作工具類

 更新時(shí)間:2025年01月08日 09:31:30   作者:風(fēng)_流沙  
在Python中對MySQL的操作通常通過mysql-connector-python或PyMySQL庫進(jìn)行,本文主要為大家介紹了一個簡單的對MySQL操作的封裝示例,希望對大家有所幫助

在Python中對MySQL的操作通常通過mysql-connector-python或PyMySQL庫進(jìn)行,以下是一個簡單的對MySQL操作的封裝示例,使用mysql-connector-python。你可以根據(jù)實(shí)際需求選擇適合的庫。

1. 安裝 mysql-connector-python 庫

pip install mysql-connector-python

2. MySQL操作工具類封裝

import mysql.connector
from mysql.connector import Error
from mysql.connector import pooling

class MySQLDatabase:
    def __init__(self, host, user, password, database, pool_size=5):
        """
        初始化 MySQL 數(shù)據(jù)庫操作類
        :param host: 數(shù)據(jù)庫地址
        :param user: 用戶名
        :param password: 密碼
        :param database: 數(shù)據(jù)庫名
        :param pool_size: 連接池大小
        """
        self.host = host
        self.user = user
        self.password = password
        self.database = database
        self.pool_size = pool_size

        # 初始化連接池
        self.pool = pooling.MySQLConnectionPool(
            pool_name="mysql_pool",
            pool_size=self.pool_size,
            host=self.host,
            user=self.user,
            password=self.password,
            database=self.database
        )

    def _get_connection(self):
        """獲取連接池中的連接"""
        return self.pool.get_connection()

    def _execute_query(self, query, params=None, fetchone=False):
        """執(zhí)行查詢操作(查詢、插入、更新等)"""
        connection = None
        cursor = None
        try:
            connection = self._get_connection()
            cursor = connection.cursor(dictionary=True)
            cursor.execute(query, params)
            connection.commit()  # 提交事務(wù)

            if fetchone:
                return cursor.fetchone()  # 獲取單條記錄
            return cursor.fetchall()  # 獲取所有記錄
        except Error as e:
            print(f"Error: {e}")
            return None
        finally:
            if cursor:
                cursor.close()
            if connection:
                connection.close()

    def query(self, query, params=None):
        """執(zhí)行查詢操作,返回查詢結(jié)果"""
        return self._execute_query(query, params)

    def insert(self, query, params):
        """執(zhí)行插入操作"""
        return self._execute_query(query, params)

    def update(self, query, params):
        """執(zhí)行更新操作"""
        return self._execute_query(query, params)

    def delete(self, query, params):
        """執(zhí)行刪除操作"""
        return self._execute_query(query, params)

    def execute(self, query, params=None):
        """執(zhí)行任意SQL語句"""
        return self._execute_query(query, params)

3. 使用示例

if __name__ == "__main__":
    # 創(chuàng)建MySQL數(shù)據(jù)庫操作類的實(shí)例
    db = MySQLDatabase(host="localhost", user="root", password="password", database="testdb")

    # 執(zhí)行查詢操作
    query = "SELECT * FROM users WHERE age = %s"
    params = (25,)
    results = db.query(query, params)
    print("Query Result:", results)

    # 執(zhí)行插入操作
    insert_query = "INSERT INTO users (name, age) VALUES (%s, %s)"
    insert_params = ("Alice", 30)
    db.insert(insert_query, insert_params)
    print("Inserted successfully!")

    # 執(zhí)行更新操作
    update_query = "UPDATE users SET age = %s WHERE name = %s"
    update_params = (31, "Alice")
    db.update(update_query, update_params)
    print("Updated successfully!")

    # 執(zhí)行刪除操作
    delete_query = "DELETE FROM users WHERE name = %s"
    delete_params = ("Alice",)
    db.delete(delete_query, delete_params)
    print("Deleted successfully!")

4. 代碼說明

1.MySQLDatabase 類:

該類封裝了數(shù)據(jù)庫連接池和常用的操作(查詢、插入、更新、刪除)方法。

通過 mysql.connector.pooling.MySQLConnectionPool 創(chuàng)建連接池,使得多個數(shù)據(jù)庫連接能有效復(fù)用,提高性能。

2._get_connection 方法:

獲取連接池中的一個連接對象,每次進(jìn)行數(shù)據(jù)庫操作時(shí)都通過連接池獲取一個連接,避免了頻繁地打開和關(guān)閉連接,減少了連接的開銷。

3._execute_query 方法:

用于執(zhí)行SQL查詢、插入、更新、刪除等操作。支持事務(wù)提交。

可以通過 fetchone 參數(shù)控制是否只獲取單條記錄。

4.query, insert, update, delete 方法:

這些方法分別對應(yīng)不同類型的SQL操作:

  • query:執(zhí)行SELECT查詢。
  • insert:執(zhí)行INSERT語句。
  • update:執(zhí)行UPDATE語句。
  • delete:執(zhí)行DELETE語句。

5.execute 方法:

這是一個通用的執(zhí)行方法,支持任何類型的SQL操作。

5. 連接池

連接池是為了提高數(shù)據(jù)庫連接的重用率,避免了每次操作都創(chuàng)建和銷毀數(shù)據(jù)庫連接的性能問題。你可以在初始化MySQLDatabase類時(shí)指定pool_size來控制連接池的大小。

6. 異常處理

使用try-except塊捕獲數(shù)據(jù)庫操作中的錯誤(如連接問題、SQL語法錯誤等),并打印出相應(yīng)的錯誤信息。

數(shù)據(jù)庫連接和游標(biāo)都通過finally語句確保被關(guān)閉,避免連接泄漏。

7. 擴(kuò)展功能

你可以根據(jù)需要擴(kuò)展更多功能,例如:

事務(wù)支持:在多個操作中保持一致性,添加事務(wù)的開始、提交、回滾操作。

數(shù)據(jù)庫連接池參數(shù):根據(jù)負(fù)載情況可以動態(tài)調(diào)整連接池大小。

日志記錄:為每個操作添加日志記錄,方便追蹤SQL執(zhí)行情況。

例如,如果需要支持事務(wù),可以在insert、update、delete方法中添加事務(wù)的管理:

def begin_transaction(self):
    connection = self._get_connection()
    connection.start_transaction()
    return connection

def commit_transaction(self, connection):
    connection.commit()

def rollback_transaction(self, connection):
    connection.rollback()

通過這種封裝方式,數(shù)據(jù)庫操作變得更加簡單、規(guī)范,并且能有效提高性能。

到此這篇關(guān)于Python封裝MySQL操作工具類的文章就介紹到這了,更多相關(guān)Python操作MySQL內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python利用openpyxl庫遍歷Sheet的實(shí)例

    Python利用openpyxl庫遍歷Sheet的實(shí)例

    今天小編就為大家?guī)硪黄狿ython利用openpyxl庫遍歷Sheet的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • python切割圖片的實(shí)現(xiàn)示例

    python切割圖片的實(shí)現(xiàn)示例

    本文主要介紹了python切割圖片的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解

    Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解

    這篇文章主要介紹了Python遠(yuǎn)程開發(fā)環(huán)境部署與調(diào)試過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Appium+Python自動化測試之運(yùn)行App程序示例

    Appium+Python自動化測試之運(yùn)行App程序示例

    這篇文章主要介紹了Appium+Python自動化測試之運(yùn)行App程序示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • 使用OpenCV校準(zhǔn)魚眼鏡頭的方法

    使用OpenCV校準(zhǔn)魚眼鏡頭的方法

    這篇文章主要介紹了使用OpenCV校準(zhǔn)魚眼鏡頭的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 基于Python+Appium實(shí)現(xiàn)京東雙十一自動領(lǐng)金幣功能

    基于Python+Appium實(shí)現(xiàn)京東雙十一自動領(lǐng)金幣功能

    一年一度的雙十一即將來臨,各大平臺都在搞活動,京東天貓忙的不易樂乎,做任務(wù)領(lǐng)金幣的過程真的好無聊,今天小編給大家分享一篇教程通關(guān)Python+Appium實(shí)現(xiàn)京東雙十一自動領(lǐng)金幣功能,需要的朋友可以參考下
    2019-10-10
  • Python使用uuid生成唯一密鑰uid的詳細(xì)教程

    Python使用uuid生成唯一密鑰uid的詳細(xì)教程

    在分布式系統(tǒng)、數(shù)據(jù)庫主鍵、會話管理等場景中,生成全局唯一標(biāo)識符是常見需求,本文詳細(xì)介紹了Python的uuid模塊,包括UUID的多種生成方式、進(jìn)階使用技巧、實(shí)際應(yīng)用場景、注意事項(xiàng)與最佳實(shí)踐,需要的朋友可以參考下
    2026-01-01
  • Python實(shí)現(xiàn)自動化拆分Word文檔(按分節(jié)符與分頁符)的完整教程

    Python實(shí)現(xiàn)自動化拆分Word文檔(按分節(jié)符與分頁符)的完整教程

    在處理大型 Word 文檔時(shí),我們經(jīng)常需要將一個完整的文檔拆分成多個獨(dú)立的小文檔,下面我們就來看看Python如何實(shí)現(xiàn)按分頁符和分節(jié)符自動化拆分 Word 文檔吧
    2026-04-04
  • 淺談python中列表、字符串、字典的常用操作

    淺談python中列表、字符串、字典的常用操作

    下面小編就為大家?guī)硪黄獪\談python中列表、字符串、字典的常用操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 使用Python實(shí)現(xiàn)高效的括號匹配檢測

    使用Python實(shí)現(xiàn)高效的括號匹配檢測

    在編程中,括號匹配是代碼規(guī)范性的基礎(chǔ)檢查,本文將深入解析如何使用Python實(shí)現(xiàn)高效的括號匹配檢測,涵蓋棧結(jié)構(gòu)應(yīng)用、多種括號類型處理及優(yōu)化策略,需要的朋友可以參考下
    2025-11-11

最新評論

会宁县| 瑞丽市| 徐汇区| 读书| 巴里| 无极县| 库尔勒市| 哈尔滨市| 黄骅市| 小金县| 英德市| 宁城县| 安乡县| 玉门市| 来宾市| 德昌县| 舟曲县| 台前县| 惠州市| 沽源县| 康平县| 青河县| 如东县| 辉县市| 柘城县| 福州市| 全南县| 蚌埠市| 屯留县| 连山| 永宁县| 咸丰县| 融水| 琼结县| 庆元县| 肥乡县| 息烽县| 建平县| 平安县| 图木舒克市| 双鸭山市|