python实现和mysql一起实现数据库的增删改查

要在 Python 中使用 MySQL 数据库进行增删改查(CRUD)操作,你可以使用 `pymysql` 库。以下是一些示例代码,展示如何实现这些操作。

首先,确保你已经安装了 `pymysql`。如果没有安装,可以通过以下命令安装:

```bash
pip install pymysql
```

### 1. 连接数据库

```python
import pymysql

# 连接数据库
conn = pymysql.connect(host='localhost', user='your_username', password='your_password', db='your_db', charset='utf8mb4')
```

### 2. 创建(Create)

```python
# 创建游标对象
cursor = conn.cursor()

# 插入数据
sql = "INSERT INTO patient (name, age, time) VALUES (%s, %s, %s)"
try:
    cursor.execute(sql, ('John Doe', 30, '2024-07-27 10:00:00'))
    conn.commit()  # 提交事务
except pymysql.Error as e:
    print(e)
    conn.rollback()  # 回滚事务

# 关闭游标和连接
cursor.close()
conn.close()
```

### 3. 读取(Read)

```python
# 创建游标对象
cursor = conn.cursor(pymysql.cursors.DictCursor)

# 查询所有数据
sql = "SELECT * FROM patient"
try:
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
        print(row)
except pymysql.Error as e:
    print(e)

# 关闭游标和连接
cursor.close()
conn.close()
```

### 4. 更新(Update)

```python
# 创建游标对象
cursor = conn.cursor()

# 更新数据
sql = "UPDATE patient SET age = %s WHERE name = %s"
try:
    cursor.execute(sql, (31, 'John Doe'))
    conn.commit()  # 提交事务
except pymysql.Error as e:
    print(e)
    conn.rollback()  # 回滚事务

# 关闭游标和连接
cursor.close()
conn.close()
```

### 5. 删除(Delete)

```python
# 创建游标对象
cursor = conn.cursor()

# 删除数据
sql = "DELETE FROM patient WHERE name = %s"
try:
    cursor.execute(sql, ('John Doe',))
    conn.commit()  # 提交事务
except pymysql.Error as e:
    print(e)
    conn.rollback()  # 回滚事务

# 关闭游标和连接
cursor.close()
conn.close()
```

### 完整示例

```python
import pymysql

# 连接数据库
conn = pymysql.connect(host='localhost', user='your_username', password='your_password', db='your_db', charset='utf8mb4')

# 创建游标对象
cursor = conn.cursor()

# 插入数据
sql_insert = "INSERT INTO patient (name, age, time) VALUES (%s, %s, %s)"
try:
    cursor.execute(sql_insert, ('John Doe', 30, '2024-07-27 10:00:00'))
    conn.commit()
except pymysql.Error as e:
    print(e)
    conn.rollback()

# 查询数据
sql_select = "SELECT * FROM patient"
try:
    cursor.execute(sql_select)
    results = cursor.fetchall()
    for row in results:
        print(row)
except pymysql.Error as e:
    print(e)

# 更新数据
sql_update = "UPDATE patient SET age = %s WHERE name = %s"
try:
    cursor.execute(sql_update, (31, 'John Doe'))
    conn.commit()
except pymysql.Error as e:
    print(e)
    conn.rollback()

# 删除数据
sql_delete = "DELETE FROM patient WHERE name = %s"
try:
    cursor.execute(sql_delete, ('John Doe',))
    conn.commit()
except pymysql.Error as e:
    print(e)
    conn.rollback()

# 关闭游标和连接
cursor.close()
conn.close()
```

确保替换 `your_username`, `your_password`, `your_db` 为你的 MySQL 数据库的实际用户名、密码和数据库名。同时,确保你的数据库服务器正在运行,并且你有足够的权限执行这些操作。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/876354.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

543.二叉树的直径

给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 class Solution{// 全局变量int ans 0;public int diameterOf…

【第五天】HTTPS和HTTP有哪些区别,HTTPS的工作原理

HTTPS和HTTP的区别: 1.安全性: HTTP是明文传输协议,数据在传输的过程中不加密,容易被窃听和篡改。HTTPS通过使用SSL或TLS协议对数据进行加密,确保传输的数据在网络上是安全的,不容易被窃取和篡改。 2.加…

leetcode-104. 二叉树的最大深度

题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,n…

PyQt5之PyQt5 vs PySide6: 选择Python GUI框架的对比分析

PyQt5 vs PySide6: 选择Python GUI框架的对比分析 在Python世界中,当谈到创建图形用户界面(GUI)应用程序时,PyQt5和PySide6经常被提及。这两个框架都是基于强大的Qt库的Python绑定,但它们有着微妙的差异。本文将深入比较这两个框架,帮助您做出明智的选择。 背景简介 PyQt5: …

自动化测试 pytest 中 scope 限制 fixture使用范围!

导读 fixture 是 pytest 中一个非常重要的模块,可以让代码更加简洁。 fixture 的 autouse 为 True 可以自动化加载 fixture。 如果不想每条用例执行前都运行初始化方法(可能多个fixture)怎么办?可不可以只运行一次初始化方法? 答&#xf…

一招就能轻松解决猫咪浮毛?最新值得买的浮毛空气净化器汇总分享

那次逛街后去朋友家,她家猫哈基米特别热情,一开门就扑过来,朋友直接给了个大拥抱加亲亲。汗水和猫毛全粘身上了,看着都让人头皮痒。好多铲屎官都抱怨,就算天天梳毛,家里还是到处都是毛,毕竟家里…

简说是什么虚拟DOM (Virtual DOM )

前言 虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex)。因为很多人是在学习 React 的过程中接触到的虚拟 DOM &…

理解文件系统(上)

模拟实现文件库 创建文件以便理解 自己想实现的文件接口,进行模拟实现 模拟的头文件要准备的头文件 open接口的实现 write接口的实现fflush接口的实现 flose接口的实现 文件实现 stdio.h stdio.c test.c makefile 创建makefile 编译运行 执行后输出log.txt,看…

Jenkins中使用环境变量

直接使用环境变量 pipeline {agent {label "${28}"}stages {stage("git clone"){steps{script{sh """pwdls"""// 环境变量的使用// 输出所有环境变量 echo "All environment variables: ${env}" // 输出单个环境…

【虚拟机】 VMware截图版详细安装教程

VMware-workstation-full-17.5.1-23298084 的安装,详细安装过程。 1.以管理员身份运行安装包 点击文件,右键打开,以管理员身份运行; 2.根据安装提示,重启电脑; (重启与否看自己电脑情况&…

企业邮件系统管理(七)全面解析企业邮件系统的配置与管理:从安全到高可用性的深入探讨

文章目录 全面解析企业邮件系统的配置与管理:从安全到高可用性的深入探讨引言第一章:邮件系统安全配置一、SMTP连接器及其配置配置步骤: 二、接受域与DNS中的MX记录配置步骤: 三、邮件加密和签名配置步骤: 第二章&…

【深入理解SpringCloud微服务】深入理解Ribbon原理并手写一个微服务负载均衡器

深入理解Ribbon原理并手写一个微服务负载均衡器 负载均衡器理解Ribbon原理手写一个微服务负载均衡器总体设计LoadBalanceClientHttpRequestFactorySimpleLoadBalanceClientSimpleLoadBalancerLoadBalanceRulespring.factories与LoadBalanceConfig 负载均衡器 在微服务架构里面…

ElasticSearch(七)— 相关性检索和组合查询

一、 相关性评分 全文检索与数据库查询的一个显著区别, 就是它并不一定会根据查询条件 做完全精确的匹配。除了模糊查询以外,全文检索还会根据查询条件给文档的相关性打分并排序,将那些与查询条件相关性高的文档排在最前面。 相关性( Relev…

kubernetes service详解

一、service的类型 clusterip:集群内部访问externalname:调用外部API时使用,域名解析,让应用不用关心实际的IP地址nodeport:集群外部访问,暴漏节点上的端口,转发到pod内loadbalancer&#xff1…

【科大讯飞笔试题汇总】2024-07-27-科大讯飞秋招提前批(研发岗)-三语言题解(Cpp/Java/Python)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新 秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 📧 清隆这边最近正在收集近一年半互联网笔试题汇总,有需要的小伙伴可以关注 文末 公主号…

数仓建设——数据分析师自己开发指标的问题

数据分析师自己开发指标的问题该如何解决呢? 数仓建设早期,业务量少、人手少时,为了提高开发效率可以适当地让数分自己计算一些指标,但数仓稳定期就不应该再有数分层了。 也就是说,数分层本身不应该存在。但数仓需要换…

如何通过压缩提示降低GPT-4的成本

如果使用得当,LLMLingua可以降低使用高级LLM的成本,并使更广泛的用户和应用程序可以使用LLM。 像GPT-4和Claude这样的大型语言模型(LLM)可以通过良好的提示工程学习新任务。然而,较长的提示会增加使用这些模型的成本,并且还会减慢…

使用大型语言模型进行文档解析(附带代码)

动机 多年来,正则表达式一直是我解析文档的首选工具,我相信对于许多其他技术人员和行业来说也是如此。 尽管正则表达式在某些情况下功能强大且成功,但它们常常难以应对现实世界文档的复杂性和多变性。 另一方面,大型语言模型提供了…

vue3使用vue-i18n,调用t时指定语言获取翻译后的文本

今天碰到一个问题。就是使用i18n在调用t(‘key’)时,一般是直接返回当前语言文本。 比如我现在是简体。直接调用 t(‘commonBar.close’) 的话会返回简体 ‘关闭’。 但我现在这个地方返回其他语言,比如繁体。要怎么处理呢 查了文档,发现t函数…

writing classes ... [xxx of xxxx] 执行时间太长

一、问题展示 二、解决方法 打开设置【File - Settings…】修改堆大小