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

Python使用PyMySql增删改查Mysql数据库

PyMysql简介

PyMysql是Python中用于连接MySQL数据库的一个第三方库,它实现了MySQL客户端/服务器协议,使得Python程序能够与MySQL服务器进行交互。由于Python
2的mysql-python(又称mysqldb)模块在Python 3上支持不够完善,因此pymysql成为了在Python
3.x环境中一个流行的替代方案。

PyMysql的主要特点和功能:

  • 兼容性:pymysql与Python 3完全兼容,并且可以在Python
    2.7及更高版本上运行,为跨Python版本的应用提供统一的MySQL数据库操作接口。
  • API设计:提供了类似DB-API 2.0规范的接口,使得开发者可以使用熟悉的执行SQL语句、获取结果集等方法。
  • 安全连接:支持安全的SSL加密连接到MySQL服务器。
  • 事务处理:通过commit()和rollback()方法支持事务控制。
  • 参数化查询:允许使用占位符(%s)进行参数化SQL查询,有效防止SQL注入攻击。
  • 多结果集:对于支持多结果集的MySQL命令,如存储过程,pymysql也能够正确处理。

基本用法步骤:

  1. 安装pymysql(通常使用pip install pymysql)
  2. 创建数据库连接
  3. 创建游标对象并执行SQL语句
  4. 处理查询结果
  5. 提交或回滚事务
  6. 关闭游标和数据库连接

以下使用PyMysql增删改查Mysql数据库

创建数据库

CREATE TABLE `users` (`id` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(50) NOT NULL,`email` varchar(100) NOT NULL,`password` varchar(100) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

连接MySql数据库

import pymysql# 连接MySQL数据库
db = pymysql.connect("localhost", "your_username", "your_password", "your_database")# 创建一个游标对象cursor
cursor = db.cursor()

查询数据(SELECT)

import pymysql# 连接MySQL数据库
db = pymysql.connect("localhost", "your_username", "your_password", "your_database")
# 创建一个游标对象cursor
cursor = db.cursor()
try:sql = "SELECT * FROM users WHERE username = %s"val = ("test_user",)cursor.execute(sql, val)results = cursor.fetchall()for row in results:print(f"ID: {row[0]}, Username: {row[1]}, Email: {row[2]}, Password: {row[3]}")
except Exception as e:print(f"查询数据失败: {e}")

插入数据(INSERT)

import pymysql# 连接MySQL数据库
db = pymysql.connect("localhost", "your_username", "your_password", "your_database")# 创建一个游标对象cursor
cursor = db.cursor()
# 插入数据(INSERT)
try:sql = "INSERT INTO users (username, email, password) VALUES (%s, %s, %s)"val = ("test_user", "test@example.com", "test_password")cursor.execute(sql, val)db.commit()print("插入数据成功")
except Exception as e:db.rollback()  # 发生错误时回滚print(f"插入数据失败: {e}")

更新数据(UPDATE)

import pymysql# 连接MySQL数据库
db = pymysql.connect("localhost", "your_username", "your_password", "your_database")# 创建一个游标对象cursor
cursor = db.cursor()
try:sql = "UPDATE users SET email = %s WHERE username = %s"val = ("new_email@example.com", "test_user")cursor.execute(sql, val)db.commit()print("更新数据成功")
except Exception as e:db.rollback()print(f"更新数据失败: {e}")

删除数据(DELETE)

import pymysql# 连接MySQL数据库
db = pymysql.connect("localhost", "your_username", "your_password", "your_database")# 创建一个游标对象cursor
cursor = db.cursor()
try:sql = "DELETE FROM users WHERE username = %s"val = ("test_user",)cursor.execute(sql, val)db.commit()print("删除数据成功")
except Exception as e:db.rollback()print(f"删除数据失败: {e}")

关闭连接

cursor.close()
db.close()

请确保将上述代码中的"your_username", “your_password”, "your_database"替换为你的实际数据库用户名、密码和数据库名。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • shell 切片参数解释
  • BUUCTF Reverse/[2019红帽杯]Snake
  • 手拉手后端Springboot整合JWT
  • 开源可观测性平台Signoz(四)【链路监控及数据库中间件监控篇】
  • 2024年原创深度学习算法项目分享
  • HTML进阶
  • WPF 新手指引弹窗
  • Spring通信传参的方法
  • AI人工智能大模型讲师叶梓《基于人工智能的内容生成(AIGC)理论与实践》培训提纲
  • OpenCV-Python(22):2D直方图
  • TensorFlow Hub模型
  • 拓展操作(三) jenkins迁移到另一个机器
  • 关键字:try-catch关键字
  • Ubuntu安装WordPress并使用Nginx作为Web服务器
  • Openwrt修改Dropbear ssh root密码
  • $translatePartialLoader加载失败及解决方式
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Angular6错误 Service: No provider for Renderer2
  • Flannel解读
  • js操作时间(持续更新)
  • log4j2输出到kafka
  • MySQL主从复制读写分离及奇怪的问题
  • NSTimer学习笔记
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Python爬虫--- 1.3 BS4库的解析器
  • springboot_database项目介绍
  • Vue.js-Day01
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • Wamp集成环境 添加PHP的新版本
  • 闭包--闭包作用之保存(一)
  • 回顾2016
  • 利用jquery编写加法运算验证码
  • 前端存储 - localStorage
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 突破自己的技术思维
  • 小程序测试方案初探
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 从如何停掉 Promise 链说起
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #if 1...#endif
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (poj1.2.1)1970(筛选法模拟)
  • (不用互三)AI绘画工具应该如何选择
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (十二)springboot实战——SSE服务推送事件案例实现
  • (实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (原創) 如何將struct塞進vector? (C/C++) (STL)