python-pymysql常用功能封装

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: python-pymysql常用功能封装

简介

pymysql是一个客户端,本文进行一个简单封装,主要是结构化和批量操作

代码

import pymysql
class MysqlCli:
    def __init__(self,host,user,password,database,port=3306,charset='utf8',use_unicode=True):
        """
        初始化
        :param host:主机名
        :param user: 用户
        :param password: 密码
        :param database: 数据库
        :param port: 端口,默认3306
        :param charset: 字符集,默认utf8
        :param use_unicode: 使用unicode,默认True
        """
        try:
            self.connect=pymysql.connect(
                host=host,
                user=user,
                password=password,
                database=database,
                port=port,
                charset=charset,
                use_unicode=use_unicode
             )
            self.cursor = self.connect.cursor()
            print(f"连接数据库{host} {database}成功!!!")
        except Exception as e:
            print(f"init error: {e}")
    def close(self):
        self.cursor.close()
        self.connect.close()
    # 无参
    def execute(self, sql):
        try:
            self.cursor.execute(sql)
            self.connect.commit()
        except Exception as e:
            self.connect.rollback()
            raise Exception(f"execute: {e}")
    # 增删改(结构化)
    def operate(self,sql,params=None):
        try:
            self.cursor.executemany(sql,params)
            self.connect.commit()
        except Exception as e:
            print(f"operate error: {e}")
            self.connect.rollback()
    # 查询(结构化)
    def select(self,sql,params=None):
        try:
          tmp_cursor = self.connect.cursor(pymysql.cursors.DictCursor)
          tmp_cursor.execute(sql,params)
          res = tmp_cursor.fetchall()
          tmp_cursor.close()
          return res
        except Exception as e:
            print(f"select error: {e}")

测试

上面代码放到了包sql_helper的helper.py中

from sql_helper.helper import MysqlCli
import uuid
if __name__ == '__main__':
    my_cli = MysqlCli(host="10.28.144.100", user="root", password="123456", database="peewee_learn")
    # 增加
    sql= "insert into users(id,name,age,gender,`desc`,time)VALUES(%s,%s,%s,%s,%s,%s)"
    print(sql)
    my_cli.operate(sql,[(str(uuid.uuid4()),'lady_killer',22,'1',"something","2023-01-25 19:39:37")])
    # 参数化查询
    sql = "select * from users where age = %s"
    res = my_cli.select(sql,18)
    print(res)
    my_cli.close()

结果截图:

可以结合Python-logging详解(彩色日志扩展,多进程安全等),添加日志。如果是并发情况下,不能仅使用一个客户端,可以考虑连接池。

参考

github-pymysql

pymysql-docs

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
11天前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
213 101
|
18天前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
165 99
|
18天前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
146 98
|
23天前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
2月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
457 1
|
5月前
|
SQL 安全 算法
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
Python 3.14 引入了七大核心技术特性,大幅提升开发效率与应用安全性。其中包括:t-strings(PEP 750)提供更安全灵活的字符串处理;类型注解惰性求值(PEP 649)优化启动性能;外部调试器API标准化(PEP 768)增强调试体验;原生支持Zstandard压缩算法(PEP 784)提高效率;REPL交互环境升级更友好;UUID模块扩展支持新标准并优化性能;finally块语义强化(PEP 765)确保资源清理可靠性。这些改进使Python在后端开发、数据科学等领域更具竞争力。
217 5
解读 Python 3.14:模板字符串、惰性类型、Zstd压缩等7大核心功能升级
|
9月前
|
安全 前端开发 数据库
Python 语言结合 Flask 框架来实现一个基础的代购商品管理、用户下单等功能的简易系统
这是一个使用 Python 和 Flask 框架实现的简易代购系统示例,涵盖商品管理、用户注册登录、订单创建及查看等功能。通过 SQLAlchemy 进行数据库操作,支持添加商品、展示详情、库存管理等。用户可注册登录并下单,系统会检查库存并记录订单。此代码仅为参考,实际应用需进一步完善,如增强安全性、集成支付接口、优化界面等。
|
10月前
|
开发框架 数据建模 中间件
Python中的装饰器:简化代码,增强功能
在Python的世界里,装饰器是那些静悄悄的幕后英雄。它们不张扬,却能默默地为函数或类增添强大的功能。本文将带你了解装饰器的魅力所在,从基础概念到实际应用,我们一步步揭开装饰器的神秘面纱。准备好了吗?让我们开始这段简洁而富有启发性的旅程吧!
136 6
|
8月前
|
人工智能 搜索推荐 测试技术
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
通义灵码 2.0 智能编码功能评测:Deepseek 加持下的 Python 开发体验
316 11
|
7月前
|
SQL 关系型数据库 数据库连接

推荐镜像

更多