当前位置: 首页 > news >正文

python使用pymysql

为了封装这个数据库操作为一个通用方法,我们可以创建一个函数,该函数接受数据库连接参数(如主机名、用户名、密码、数据库名)、SQL语句以及必要的参数(用于参数化查询)。下面是一个简单的封装示例:

import pymysqldef execute_query(host, user, password, db, query, params=None, charset='utf8mb4'):"""执行SQL查询并返回结果。:param host: 数据库主机名:param user: 数据库用户名:param password: 数据库密码:param db: 数据库名:param query: SQL查询语句:param params: 用于参数化查询的参数元组,默认为None:param charset: 字符集,默认为'utf8mb4':return: 查询结果"""try:# 建立数据库连接connection = pymysql.connect(host=host, user=user, password=password, db=db, charset=charset)with connection.cursor() as cursor:# 执行SQL语句cursor.execute(query, params)# 获取查询结果result = cursor.fetchall()# 返回查询结果return resultexcept pymysql.MySQLError as e:print(f"数据库错误: {e}")return Nonefinally:# 关闭数据库连接if connection:connection.close()# 使用示例
if __name__ == "__main__":host = 'localhost'user = 'user'password = 'passwd'db = 'db'query = "SELECT `id`, `name` FROM `users` WHERE `age` > %s"params = (18,)result = execute_query(host, user, password, db, query, params)if result:for row in result:print(row)else:print("没有查询到结果")

这个函数execute_query接受必要的数据库连接信息和SQL查询语句,以及可选的参数元组用于参数化查询。它执行查询并返回结果。如果发生数据库错误(如连接问题或SQL语句错误),它会打印错误消息并返回None。最后,它确保数据库连接在使用后被正确关闭。

请注意,在实际应用中,您可能还需要处理其他类型的异常,比如网络问题导致的连接中断等。此外,对于需要提交更改的SQL语句(如INSERT、UPDATE、DELETE),您可能需要在with块内调用connection.commit()来提交更改。但在这个例子中,我们只处理查询操作,因此不需要提交更改。

http://www.lryc.cn/news/476542.html

相关文章:

  • Vue3 + TypeScript 组件和文件命名规范及 setup 导入顺序规范
  • netty之处理连接源码分析
  • Dockerfile文件编写
  • Oracle SQL 使用 ROWNUM 分页查询速度太慢的问题及解决方案!
  • Django3 + Vue.js 前后端分离书籍添加项目Web开发实战
  • 楼梯区域分割系统:Web效果惊艳
  • Day10加一
  • UTF-8简介
  • 基于Openwrt系统架构,实现应用与驱动的实例。
  • SQL进阶技巧:如何利用三次指数平滑模型预测商品零售额?
  • HTB:Cicada[WriteUP]
  • 小张求职记四
  • 适用于 c++ 的 wxWidgets框架源码编译SDK-windows篇
  • flink 内存配置(二):设置TaskManager内存
  • 【C++ 算法进阶】算法提升八
  • 阿里云实时数据仓库HologresFlink
  • 生成式语言模型的文本生成评价指标(从传统的基于统计到现在的基于语义)
  • 【网安案例学习】暴力破解攻击(Brute Force Attack)
  • 时间序列预测(十八)——实现配置管理和扩展命令行参数解析器
  • Vue问题汇总解决
  • Spark学习
  • 一些小细节代码笔记汇总
  • L4.【LeetCode笔记】链表题的VS平台调试代码
  • JavaCV 之高斯滤波:图像降噪与细节保留的魔法
  • VsCode显示空格
  • .Net C# 基于EFCore的DBFirst和CodeFirst
  • w012基于springboot的社区团购系统设计
  • 笔记本降频超鬼锁屏0.39电脑卡到不行解决办法实操记录
  • 优选算法第四讲:前缀和模块
  • ubuntu20.04 加固方案-设置限制su命令用户组