MySQL中的开发基于Python的SQL工具类操作数据库简单示例

python操作mysql数据库 python操作数据库的过程: 创建连接—获取游标—执行命令—关闭游标—关闭连接 python访问mysql要用pymysql库 pymysql需要安装:pip install pymysql 导入pymysql 阅读详情

操作数据库封装SQL工具类的两种方式

  • 为了更方便的实现基于连接池和pymysql 连接数据库,需开发一个sql工具类来让sql操作更简洁
  • 用两张方式来封装SQL工具类

1 )单例模式

封装 db.py 工具类

import pymysql
from dbutils.pooled_db import PooledDB

class DBHelper(object):
  def __init__(self):
      self.pool = PooledDB(
        creator=pymysql,
        maxconnections=5,
        mincached=2,
        maxcached=3,
        blocking=True,
        setsession=[],
        ping=0,
        host='127.0.0.1',
        port=3306
        user='root',
        password='xxxxx',
        database='userdb',
        charset='utf8'
      )
  
  def get_conn_cursor(self):
    conn = self.pool.connection()
    cursor=conn.cursor(pyymsql.cursors.DictCursor)
    return conn, cursor
  
  def close_conn_cursor(self, *args):
    for item in args:
      item.close()
  
  def exec(self, sql, **kwargs):
    conn, cursor = self.get_conn_cursor()
    cursor.execute(sql, kwargs)
    conn.commit()
    self.close_conn_cursor(conn, cursor)

  def fetch_one(self, sql, **kwargs):
    conn, cursor = self.get_conn_cursor()
    cursor.execute(sql, kwargs)
    result = cursor.fetchone()
    self.cloes_conn_cursor(conn, cursor)
    return result
  
  def fetch_all(self, sql, **kwarrgs):
    conn, cursor = self.get_conn_cursor()
    cursor.execute(sql, kwargs)
    result = cursor.fetchall()
    self.close_conn_cursor(conn, cursor)
  
db = DBHelper()

xxx.py 调用示例

from db import db

v1 = db.fetch_one("select * from d1")
print(v1)

v2 = db.fetch_one('select * from d1 where id=%(nid)s ', nid=3)
print(v2)

2 ) 上下文管理

基于 with 上下文管理

with 获取连接:
  执行sql (执行完毕后,自动将连接交还给连接池)

封装 db_context.py

import threading
import pymysql
from dbutils.pooled_db import PooledDB

POOL = PooledDB(
  creator=pymysql, # 使用连接数据库的模块
  maxconnections=5,
  mincached=2,
  maxcached=3,
  blocking=True,
  setssion=[],
  ping=0,
  host='127.0.0.1'
  port=3306,
  user='root',
  password='xxxx',
  database='userdb',
  charset='utf8'
)

class Connect(object):
  def __init__(self):
      self.conn = conn = POOL.connection() # 连接
      self.cursor = conn.cursor(pymysql.cursors.DictCursor) # 游标

  def __enter__(self):
      return self
  
  def __exit__(self, exc_type, exc_val, exc_tb):
      self.cursor.close()
      self.conn.close()

  def exec(self, sql, **kwargs):
      self.cursor.execute(sql, kwargs)
      self.conn.commit()

  def fetch_one(self, sql, **kwargs):
      self.cursor.execute(sql, kwargs)
      result = self.cursor.fetchone()
      return result
  
  def fetch_all(self, sql, **kwargs):
      self.cursor.excute(sql, kwargs)
      result = self.cursor.fetchall()
      return result

yyy.py 调用示例

from db_context import Connect

### 实例化 对象得到值
with Connect() as obj:
  ret = obj.fetch_one('select * from d1')
  print(ret)

  ret = obj.fetch_one("select * from d1 where id=%(id)s", id=3)
  print(ret)
Python 之数据库操作(Python Database Operations) MySQL 采用标准的 SQL 语言(结构化查询语言),SQL 是一种数据库查 询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。 虽然 Python 可以支持数据的本地存储,但前提是先从数据库获取才能保存下来,同 时还无法存储过多的数据,因为数据释放和使用会占用较大的内存,数据库负责把磁盘数据 组织好放回内存, Python 负责在内存中操作数据。本章详细介绍Python数据库操作。 阅读详情

相关推荐

Python操作MySQL数据库CRUD入门

本文还有配套的精品资源,点击获取 简介:在IT领域,Python与MySQL结合进行数据库管理非常常见。本项目“CRUD_MySql_Python”着重教授如何利用Python语言执行数据库的核心操作:创建(Create)、读取(Read)、更新(Update)、删除(Delete),即CRUD操作。通过安装和使用MySQL连接库如 pymysql 或 ...

weixin_42356162的博客 1377

SQL数据库应用系统开发数据类

import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; //current public class DataManagement { private static...

大知无涯者 1万+

Python-Python写的工具类

Python写的工具类

数据库连接池与SQL工具类

数据库连接池与SQL工具类 1.数据库连接池 依赖包 pymysql dbutils # -*- coding: utf-8 -*- ''' @Time : 2021/11/19 16:45 @Author : ziqingbaojian @File : MySql.py ''' # 依赖第三发包:pymysql,dbutils import pymysql from dbutils.pooled_db import PooledDB MYSQL_DB_POOL=Pooled

紫青宝剑的博客 756

Python带动态参数功能的sqlite工具类

本文实例讲述了Python带动态参数功能的sqlite工具类。分享给大家供大家参考,具体如下: 最近在弄sqlite和python 在网上参考各教程后,结合以往java jdbc数据库工具类写出以下python连接sqlite的工具类 写得比较繁琐 主要是想保留一种类似java的Object…args动态参数写法 并兼容数组/list方式传递不定个数参数 并且返回值是List形式 dict字典 以便和JSON格式互相转换 在python中有一些区别 经过该工具类封装之后可以有以下用法: db.executeQuery("s * f t w id=? and name=?", "id01",

400G光模块测试全攻略:从PCS层到CMIS合规的避坑指南

本文为网络设备测试工程师和光通信研发人员提供了一份详尽的400G光模块测试实战指南。文章深入剖析了从PCS层信号完整性、FEC容限到CMIS管理接口合规性测试的全流程,并分享了ANLT协议分析、SerDes眼图调试以及系统级流量压力测试中的核心技巧与常见避坑点,旨在帮助读者构建一套高效、精准的测试体系,确保高速光模块的可靠性与性能。

weixin_29300931的博客 215

Mybatis常用工具类-SQL类

Mybatis工具类

qq_45701514的博客 1621

RNA-Seq数据分析实战:从FastQC到STAR比对的完整流程(附避坑指南)

本文提供了RNA-Seq数据分析从FastQC质控到STAR比对的完整实战流程与避坑指南。详细解读了FastQC/MultiQC报告的关键指标,并重点阐述了STAR比对工具的核心参数设置、索引构建及性能优化策略,旨在帮助用户获得准确可靠的比对结果,为下游基因表达分析奠定坚实基础。

weixin_29290259的博客 92

SQLAlchemy 封装的工具类,数据库pgsql(数据库连接池)

SQLAlchemy 是 Python 著名的 ORM 工具包。通过 ORM,开发者可以用面向对象的方式来操作数据库,不再需要编写 SQL 语句。SQLAlchemy 支持多种数据库,除 sqlite 外,其它数据库需要安装第三方驱动。

qiaobing1226的博客 2867

EtherCAT从站EEPROM组成信息详解(2):字8-15产品标识区

以实际的从站EEPROM数据为例,参照EtherCAT的SII规范,详细分析了从站EEPROM字8-字15的产品标识区内容组成。

kevin1499的博客 719

SPICE仿真软件:HSPICE_(20).HSPICE仿真结果的后处理

HSPICE仿真结果的后处理是一个多步骤的过程,包括读取结果文件、可视化、分析和导出。通过使用命令行工具、Python脚本和HSPICE内置工具,可以高效、准确地完成这些任务。Python脚本的灵活性和强大的数据分析能力使其成为后处理的理想选择。自动化处理可以显著提高工作效率,减少人为错误,而高级分析方法可以更深入地理解仿真结果,为电路设计提供有力支持。

kkchenjj的博客 1382

python与数据库————python调用MySQL数据库与SQL的工具类

基本连接方式 # 导入mysql数据库 import pymysql try: # 创建连接 conn = pymysql.connect(host="127.0.0.1",port=3306,user="root", password="root",db="db_mysql",charset='utf8') # 获取游标对象 cursor = conn.cursor() # 执行SQL,如果是增删改,execute会返

flandreflor的博客 276

基于深度学习YOLOv8的PCB板缺陷检测系统

基于YOLOv8的PCB板缺陷检测系统,可以有效提高PCB生产过程中的检测效率。未来,我们可以进一步优化模型,结合更多的数据增强策略和先进的网络结构,以适应更复杂的生产环境。为了进行训练,理想的数据集应包含多种不同缺陷类型和不同背景的PCB图像。YOLOv8需要的数据格式为每个图像一个标签文件,每个标签文件包含缺陷的类别及其边界框坐标。运行该界面时,用户可以通过点击按钮选择图像,随后系统将自动检测图像中的PCB缺陷并显示结果。训练完成后,可以使用训练好的模型进行推理,检测新的PCB图像中的缺陷。

YOLO 1071

优雅操作MySQL:Python封装高可用MySQL工具类详解

本文介绍了一个基于Python的MySQL工具类MySQLUtils的封装,旨在简化数据库操作并提高代码复用性。文章首先分析了原生pymysql库在实际开发中的痛点,包括繁琐的连接管理、易错的事务处理、SQL注入风险等问题。随后详细展示了工具类的完整实现,核心功能包括: 自动化的连接管理(通过上下文管理器实现) 安全的事务处理机制(自动提交/回滚) 防SQL注入的参数化查询 字典格式的结果返回(提高可读性) 完善的错误日志记录 文章还提供了实战示例和进阶优化建议,如连接池管理、批量操作扩展等。该工具类特别适

漫画之迷学编程 1308

26、多级快速多极子算法(MLFMA)在大规模电磁问题中的应用

本文探讨了多级快速多极子算法(MLFMA)在大规模电磁问题中的高效应用。通过分层分区策略,MLFMA在分布式内存架构上实现了高效并行化,能够求解包含数亿未知数的复杂电磁问题。文章分析了介质球体、半球透镜、周期性结构和损耗介质阵列等典型案例,验证了MLFMA的高精度与广泛适用性。同时,MLFMA被应用于实际场景如隐身目标Flamme的外部共振分析和含分裂环谐振器的超材料设计,展示了其在航空航天、超材料和生物医学等领域的广阔前景。未来发展方向包括算法优化、多物理场耦合和实时计算,进一步拓展其应用潜力。

t8u9v0w1x的博客 119

【人工智能】RAG如何根据实际需求选择和进行文档解析(如 PDF、Word、TXT、网页等)?

文档解析的核心在于根据解析目标、文档类型和处理量选择合适工具。PDF、Word、TXT和网页各有特性:PDF需区分可编辑与扫描版,Word需处理结构化内容,TXT简单但需注意编码,网页需应对动态内容。解析场景包括提取纯文本、结构化数据、保留格式和批量处理。非技术用户可借助工具如Adobe Acrobat、WPS和在线OCR,技术用户可通过编程实现自动化。通用流程为:明确目标、分析文档属性、选择工具并测试优化。核心是“工具适配需求”,无需追求万能方案。

奶爸的编程之路,也就一周冷个三天 506

python 对MySQL操作封装工具类

在Python中对MySQL的操作通常通过或PyMySQL库进行,以下是一个简单的对MySQL操作的封装示例,使用。你可以根据实际需求选择适合的库。

cheng_ji的专栏 978

无限泛化!AI背景文字识别,腾讯文字六宫格

本文介绍了生成大规模文字验证码数据集的方法,通过使用上百种字体和2万+字库,结合随机背景和数十种图像增强技术,生成了2000万+的多样化样本。该方法采用二阶段训练策略,确保模型对字体、形态、形变等具有强泛化能力,可适配腾讯、咸鱼等多种平台的文字验证码识别,包括生僻字和复杂形变情况。生成的模型在多种验证码场景下表现优异,但强调该方法仅用于技术研究,严禁非法用途。

码王吴彦祖的博客 567

Python 操作 MySQL 数据库

MySQLdb 是用于Python链接Mysql数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

2404_89367862的博客 1416

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python使用DB-API操作MySQL数据库

Python提供了一个标准数据库API,称为DB-API,用于处理基于SQL的数据库。 与任何底层数据库的交互都可以使用DB-API,因为DB-API在代码与驱动程序之间提供了一个抽象层,可以根据需要替换底层数据库,而无需丢弃现有的代码。 DB-API与底层数据库交互示例: ①代码 ⇆ ②使用DB-API ⇆ ③数据库驱动程序 ⇆ ④底层数据库(如MySQL等) 使用DB-API操作MySQL...

gdjlc的专栏 921

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

python 操作mysql数据库简单封装

第一步,安装pymysql库:pip install pymysql 第二步,创建一个db_utils.py 第三步,上封装好的代码: class MySqlUtils: def __init__(self, host=None, port=0, user=None, passwd=None, db=None, charset='utf8'): self.conn = pymysql.connect(host=host,

u010799534的博客 2158

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【python-mysql】操作mysql的util工具类-手动写sql操作

python操作mysql

唐古的博客 439

Python操作mysql

pymysql, 数据库, Python

liu_sir1009的博客 5191
上一篇: MySQL中的连接池
下一篇: Go语言中使用工作区模式解决私有包不方便调试的问题
Wang's Blog
博客等级 码龄12年 7433粉丝 2421原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值