python3 Mysql事务框架

本文介绍了一个基于Python的MySQL事务处理框架实现。通过该框架可以进行数据查询和增删改等操作,并确保数据的一致性和事务的正确性。文章详细解释了如何使用pymysql模块来建立数据库连接、执行SQL语句以及如何处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 事务框架

import pymysql
import logging


class MysqlHandler:
    """
    Mysql事务框架
    """

    # 创建mysql客户端连接
    __mysql_client = pymysql.connect('mysql_host', 'mysql_user', 'mysql_password', 'mysql_db', charset='utf8')

    def __init__(self):
        pass

    def start(self):
        try:
            self.__process()
        except Exception as e:
            logging.error(repr(e))
            # 事务回滚
            self.__mysql_client.rollback()
        finally:
            self.__end()

    def __end(self):
        # 事务提交
        self.__mysql_client.commit()
        self.__mysql_client.close()

    def __process(self):
        # 查询操作
        self.__mysql_select_handler(sql='')
        # 增删改操作
        self.__mysql_operate_handler(sql='', params=[])

    def __mysql_select_handler(self, sql):
        """
        查询数据: 执行输入sql, 返回数据
        :param sql: 完整SQL语句
        :return: 查询结果
        """
        logging.info('selecting from Mysql ...')
        with self.__mysql_client.cursor() as cursor:
            cursor.execute(sql)
            data = cursor.fetchall()
        return data

    def __mysql_operate_handler(self, sql, params=None):
        """
        插入数据: 执行输入sql, 返回受影响行数
        :param sql: 完整SQL语句
        :param params: 参数
        :return: 受影响行数
        """
        logging.info('operating Mysql ...')
        logging.info(sql)
        with self.__mysql_client.cursor() as cursor:
            if params:
                effect_row = cursor.execute(sql, params)
            else:
                effect_row = cursor.execute(sql)
            logging.info('effect row: {row_ct}.'.format(row_ct=effect_row))
        return effect_row

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值