pymysql执行非查询语句会自动提交事务,关闭事务自动提交

一、前置条件

在mysql数据库生成数据:

CREATE DATABASE mydatabase;CREATE TABLE Course (CourseID INT PRIMARY KEY,CourseName VARCHAR(100),Instructor VARCHAR(100),Credits INT,StudentID INT,FOREIGN KEY (StudentID) REFERENCES StudentInformation(StudentID)
);INSERT INTO CourseInformation (CourseID, CourseName, Instructor, Credits, StudentID)
VALUES(1, 'Math', 'John', 3, 1),(2, 'English', 'Sarah', 2, 2),(3, 'Physics', 'David', 4, 3),(4, 'Chemistry', 'Emily', 3, 1);

python执行非查询语句:

import pymysql# 创建连接
conn = pymysql.connect(host="127.0.0.1",    # 参数根据实际数据填写port=3306,user="root",password="root",database="mydatabase")# 创建游标
cursor = conn.cursor()# 执行增加数据sql语句
sql = "insert into course(CourseID,CourseName,Instructor) values(5,'语文','xu');"
cursor.execute(sql)# 删除游标
cursor.close()# 删除连接
conn.close()

二、执行效果

三、原因分析

1、python代码没有开启自动提交,默认autocommit=False

2、mysql默认开启了自动提交,autocommit=1(SELECT @@autocommit;),但是执行

set autocommit=0后再次执行该python代码,仍然会自动提交事务即成功添加数据

3、查询数据表的存储引擎

# 查看当前数据库支持的存储引擎
show ENGINES;# 查看指定数据库所有表使用的存储引擎
show table status from 库名;    # 查看指定表的存储引擎
show create table 表名;

发现上面sql语句生成的数据表默认的存储引擎是MyISAM,经查询MyISAM不支持事务,需要换成支持事务的存储引擎

四、结论

        使用sql语句没有指定存储引擎会默认使用MyISAM引擎,该引擎不支持事务,需要换成支持事务的存储引擎,例如:Mysql 的InnoDB

        切换到支持事务的引擎之后,使用上述sql语句执行后,MySQL会将这些修改暂时存储在内存中,这些修改被称为"未提交的数据"。在事务提交之前,所有的修改都不会被写入到磁盘上的数据文件中,而是存储在内存中的缓冲区中,只有进行事务的提交或回滚操作才会将执行的结果写入到磁盘上的数据文件中

  • 事务提交(2选1):
1、conn = pymysql.connect(host="127.0.0.1",port=3306,user="root",password="root",database="mydatabase",autocommit=True)    # 开启自动提交2、conn.commit()    # 事务提交,conn是数据库连接对象
  • 事务回滚:
conn.rollback()    # 事务回滚,conn是数据库连接对象

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

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

相关文章

win10 Baichuan2-7B-Chat-4bits 上部署 百川2-7B-对话模型-4bits量化版

搞了两天才搞清楚跑通 好难呢,个人电脑 win10 ,6GB显存 个人感觉 生成速度很慢,数学能力不怎么行 没有ChatGLM2-6B 强,逻辑还行, 要求: 我的部署流程 1.下载模型 ,下载所有文件 然后 放到新建的model目录 https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat-4bits/tr…

HarmonyOS之 组件的使用

一 容器 1.1 容器分类 Column表示沿垂直方向布局的容器。Row表示沿水平方向布局的容器。 1.2 主轴和交叉轴 主轴:在Column容器中的子组件是按照从上到下的垂直方向布局的,其主轴的方向是垂直方向;在Row容器中的组件是按照从左到右的水平方向…

怒刷LeetCode的第11天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:迭代 方法二:递归 方法三:指针转向 第二题 题目来源 题目内容 解决方法 方法一:快慢指针 方法二:Arrays类的sort方法 方法三:计数器 方法四…

如何借助上线初期运维管理守住项目建设最后一公里

随着运营商技术升级、业务发展,以及服务能力要求提升,当下新建项目的交付或系统大版本升级大多数都需要历经千辛万苦才达到上线的彼岸。然而,项目上线并不意味着项目结束,“上线”也并不意味着终点,而是一个新的管理模…

Redis学习笔记--001

Redis快速入门 文章目录 Redis快速入门一、初识Redis1.1、NoSQL数据库1.2、Redis介绍1.3、[Redis](https://redis.io/)的安装 二、Redis常见命令2.1、Redis默认启动2.2、指定配置启动2.3、Redis开机自启设置 三、Redis客户端3.1、Redis命令行客户端3.2、图形化桌面客户端 四、r…

软件项目开发的流程及关键点

软件项目开发的流程及关键点 graph LR A[需求分析] --> B[系统设计] B --> C[编码开发] C --> D[测试验证] D --> E[部署上线] E --> F[运维支持]在项目开发的流程中,首先是进行需求分析,明确项目的目标和功能要求。接下来是系统设计&am…

【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解

一,何为SPA SPA(Single Page Application)是一种 Web 应用程序的开发模式,它通过使用 AJAX 技术从服务器异步加载数据,动态地更新页面内容,实现在同一个页面内切换不同的视图,而无需整页刷新 1.…

优维低代码实践:图片和搜索

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 优维…

爬虫 — App 爬虫(一)

目录 一、介绍二、APP 爬虫常见反爬三、APP 抓包常用工具四、模拟器五、安装 APP1、下载 APP2、安装 APP 六、fiddler1、工作原理2、安装3、基本介绍 七、环境配置1、fiddler 的配置2、夜神模拟器的配置 八、案例 一、介绍 爬虫分类——数据来源 1、PC 端爬虫(网页…

Multisim14.0仿真(二十)74LS161 4位同步二进制加法计数器

一、仿真原理图: 二、仿真效果图:

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云计算的演进云原生架构1. 容器化2. 微服务3. 自动化部署和扩展4. 故障恢复 自动化运维1. 基础设施即代码(IaC)2. 运维自动化示例:使用Ansible自动化配置管理 3. 自动化监控和报警 未来展望1. 更多的自动化2. 多云混合云3. 边缘计算…

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候(制作OBJ),发现像Atomic blender插件和PDB本身并不支持双键,需要对PDB文件进行修改,参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决

D3DX9_43.dll是一个动态链接库文件,它是DirectX的一个组件,主要用于支持一些旧版本的游戏和软件。当电脑缺少这个文件时,可能会导致这些游戏和软件无法正常运行。例如,一些老游戏可能需要D3DX9_43.dll来支持图形渲染等功能。此外&…

需求是怎么一步一步变态的

最初的需求 需求是处理一些数据,数据例子: 而界面要显示的样子: 看起来不太难,可以分解出需求: 每一列的所有数据要都能参与选择,或者输入当一个参数选中之后,比如选中A选中1,则…

Jenkins用户管理(二):不同用户分配不同的任务访问权限

需求:不同用户访问到不同的Jenkins任务。 依赖插件:Role-based Authorization Strategy 1. 插件安装 进入【系统管理】-【插件管理】-【可用插件】,搜索Role-based Authorization Strategy进行安装,随后重启jenkins 2. 全局安全配置 进入【系统管理】-【全局安全配置】,【…

K8S:Pod容器中的存储方式及PV、PVC

文章目录 Pod容器中的存储方式一.emptyDir存储卷1.emptyDir存储卷概念2.emptyDir存储卷示例 二.hostPath存储卷1.hostPath存储卷概念2.hostPath存储卷示例 三.nfs共享存储卷1.nfs共享存储卷示例 四.PV和PVC1.PV、PVC概念2.PVC 的使用逻辑及数据流向3.storageclass插…

自动化测试:yaml结合ddt实现数据驱动!

在pythonunittestseleniumddt的框架中,数据驱动常见有以下几种方式实现: Csv/txtExcelYAML 本文主要给大家介绍测试数据存储在YAML文件中的使用场景。首先先来简单介绍一下YAML。 1. 什么是YAML 一种标记语言类似YAML,它实质上是一种通用…

git安装配置教程

目录 git安装配置1. 安装git2. git 配置3.生成ssh key:4. 获取生产的密钥3. gitee或者github添加ssh-key4.git使用5. git 使用-本地仓库与远程仓库建立连接第一步:进入项目文件夹,初始化本地仓库第二步:建立远程仓库。 建立远程连接的小技巧 …

Git学习笔记9

Gitlab中的代码是要部署到生产服务器上。 CI: Continuous integration 简称CI: 是一种软件开发实践,即开发团队成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都…