python操作mysql怎么开启事务

现在出了个状况: 10条数据, 我是陆续执行10遍insert方法,最后才提交数据的, 但是别人在我执行这几条数据插入语句的过程中, 会查到数据表有新增数据id, 但是看不到数据,因为我还没提交, 这时候就很尴尬了,所以想先开启事务, 这样对方查询的时候就查不到我正在插入且未提交的数据了, 那python中怎么开启事务呢?

下边这是连接数据库的代码, 那开启事务和提交事务的代码怎么写呢?

import MySQLdb

# 打开数据库连接
db = MySQLdb.connect("localhost", "testuser", "test123", "TESTDB", charset='utf8' )

# 使用cursor()方法获取操作游标
cursor = db.cursor()

# 使用execute方法执行SQL语句
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取一条数据
data = cursor.fetchone()

print "Database version : %s " % data

# 关闭数据库连接
db.close()

2个回答

python当中的MySQLdb和pymysql库本身就包含了事务处理……
commit()之后才生效啊
未提交之前出现数据id?我一下糊涂了

wylycool
wylycool 好的, 检查发现级别是已提交读是正常的, java那边的小问题, 我这儿没做修改,感谢!
4 个月之前 回复
u010911997
Mr.Yun 回复wylycool: 检测下隔离级别,可能出现脏读,然后自增id是数据库自己维护,你只要insert不管有没有commit他都会自己更新,哪怕你insert失败了,他也会更新
4 个月之前 回复
wylycool
wylycool 是的, 这10条连续执行完insert后, 还没有执行commit, 对方在数据库中已经查到了id自增了10个,并且昨晚发现数据也能看到..然后他想修改,出现了错误,因为我数据没提交, ...很奇怪, 对方是java操作的数据库, 竟然在我没提交都能查到数据..我打了断点后, 用python操作数据库, 是查不到有新数据的, 不知道那个java程序是不是写的有问题
4 个月之前 回复

检测下隔离级别,可能出现脏读,
然后自增id是数据库自己维护,你只要insert不管有没有commit他都会自己更新,哪怕你insert失败了,他也会更新

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python的mysql操作(事务、游标)
1、mysql事务 MySQL事务主要用于处理操作量大,复杂度高的数据。 比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。 在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。 事务处理可以用来维护数据库的完整性,保证成批
开启mysql事务功能
在使用阿里云进行服务器开发时,遇到一个问题,mysql的事务功能不作用,查阅资料后发现是table默认的引擎不支持事务功能,只需将table的引擎模式调整为InnoDB即可,特此备忘: 环境说明:阿里云centos 6.5 64位 mysql版本 :5.1.73 操作步奏 1.进入mysql  mysql -u root -p 2.查看mysql默认引擎模式 show en
php mysql 开启事务
mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交 $res1 = mysql_query($sql1); $res2 = mysql_query($sql2); if ($res1 && $res2) { mysql_query("COMMIT");//提交事务 }else{ mysql_query("RO
MYSQL事务的开启与提交
对于一个MYSQL数据库(InnoDB),事务的开启与提交模式无非下面这两种情况: 1>若参数autocommit=0,事务则在用户本次对数据进行操作时自动开启,在用户执行commit命令时提交,用户本次对数据库开始进行操作到用户执行commit命令之间的一系列操作为一个完整的事务周期。若不执行commit命令,系统则默认事务回滚。总而言之,当前情况下事务的状态是自动开启手动提交。 2&...
mysql复制 开启事务
Mysql复制分成三步: (1)    master将改变记录到二进制日志(binary log)中(这些记录叫做二进制日志事件,binary log events); (2)    slave将master的binary log events拷贝到它的中继日志(relay log); (3)    slave重做中继日志中的事件,将改变反映它自己的数据。mysql日志一般分为5种错误日志:-lo...
【mysql】【事务的开启与提交】
成功的start transaction;(开始事务)commit;(结束事务)失败的start transaction;(开始事务)rollback;(事务结束回滚)
python怎么操作mysql
python怎么操作mysql? 先附一段代码: import pymysql import redis import datetime def truncateDateBase(): connect = pymysql.Connect( host='10.1.1.123', port=1111, user='user_name', ...
go 连接 mysql 开启事务
package main import ( “database/sql” “fmt” _ “github.com/go-sql-driver/mysql” “log” ) // 结构体 type customer struct { id int name string sex string age int phone string email string } type custo...
如何开启mysql的事务支持!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
让所有表都支持事务,我记的好象是要修改my.ini 中的内容rn有谁可以帮助一下,谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
mysql事务还原点操作
MySQL的事务处理 1:概述 MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 2:常用操作 1:关闭自动提交 set autocommit =0; 2:删除部分表记录 delete from
开启事务
/** * 对数据库多张表进行 增、删、改的时候,开启事务 * 用Yii2 来进行举例 * public function actionCreateDynamic() { $request = Yii::$app->request; $user_id = $request->post('user_id'); //用户id $content = $request->post('content
JDK9,C3P0连接池配置,以及MYSQL执行增删改操作开启事务
声明;本人使用的JDK9 ,MYSQL数据库8;项目结构如下;   使用c3p0开发;  工具类; package utils; import com.mchange.v2.c3p0.ComboPooledDataSource; import java.sql.Connection; import java.sql.PreparedStatement; /** * @aut...
mysql 事务怎么实现的 ?
      有一段时间不用mysql 了,这几天找了一本书想把mysql 的那些东西重新复习一下。看到mysql的事务处理的时候 ,做了一个小实验 ,但发现实现不了事务。存储过程中第二个sql 报主键冲突,应该是全部回滚的。可是第一个sql竟然提交了, 不知道是不是我对mysql的事务机制没有理解清楚。           存储过程如下, 希望有高手支招,十分感谢   ...
mysql开启慢日志(操作)
sql及索引优化如何发现有问题的SQL呢?我们可以使用MYSQL慢查日志对有效率问题的SQL进行监控//查看慢查日志是否开启 (on开启 off关闭) show variables like 'slow_query_log'; //查看慢查日志存储地址 show variables like '%slow%'; //设置慢查日志存储地址 set global slow_query_log_file
【Java】MySQL开启事务封装库 ManageThreadLocal
使用的数据库线程池工具 c3p0-0.9.1.2.jar 、 mchange-commons-java-0.2.10.jar 作用:用一个线程绑定connection对象, 每次取connection的时候保证拿到的始终是同一个对象 代码实现: package cn.jishupeng.boookstroe.utils; import cn.jishupeng.bookstore.util...
mysql命令行执行SQL开启事务
MySQL默认采用自动提交(AUTOCOMMIT)模式,不是显示的开启一个事务,每个查询都被当作一个事务执行提交操作。 在当前连接中,可以通过设置AUTOCOMMIT变量来开启或者禁用自动提交功能。   mysql> show variables like 'AUTOCOMMIT';+---------------+-------+| Variable_name | Value |+...
mysql撤销操作,事务,回滚
对mysql数据库数据操作时经常需要撤销操作,主要用到事务和回滚 用法是: 1. start transaction; #开启事务 2. set savepoint +回滚点名称(name); #设置回滚点名称 3. balabala 数据处理balabala; #正常的数据处理 4. rollback to 回滚点名称/commit; #commit 表示确认提交,将3的数据更新提交到数据...
navicat for mysql 对事务的操作
数据表 student 表teacher 课程表course 成绩表sc 首先,开始一个事务。 START transaction ; 第一个sql语句:二班 转学生 殷离 和 曾啊牛 添加学生信息到student表: ‘殷离’,’女’,’18’,’二班’ 和 ‘曾阿牛’,’男’,’10’,’二班’ INSERT into student (Sname,Ssex...
PHP PDO操作mysql事务
PHP PDO操作mysql事务的简单示例以及需要注意的几个小问题
MySQL开启针对mysql的所有操作log
一,故障原因: 在/etc/my.cnf开启了log参数后: log=/data/mysql/query_log.log 重新启动mysql的时候报错, [root@bogon mysql]# /etc/init.d/mysqld start Starting MySQL. ERROR! The server quit without updating PID file (/data
nodejs操作MySQL,mysql连接池及事务的使用
本篇,我们介绍下,nodejs中访问mysql数据库,采用mysql官方驱动 npm install mysql --save 02_curd.js var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', user :...
mysql库操作mysql事务和锁定表
/* MYSQL的事务处理主要有两种方法。 1、用begin,rollback,commit来实现 begin 开始一个事务 rollback 事务回滚 commit 事务确认 2、直接用set来改变mysql的自动提交模式 MYSQL默认是自动提交的,也就是你提交一个QUERY,它就直接执行!我们可以通过 set autocommit=0 禁止自动提交 set autocommit=1 开启自动...
MySQL中的事务(MySQL与事务)
简单说明了MySQL的事务。 事务的由来,事务在MySQL中的用法。
Python3.x的mysqlclient的安装、Python操作mysql,python连接MySQL数据库,python创建数据库表,带有事务的操作,CRUD
1、数据库操作1.1准备工作:1、安装一个mysql数据库软件 2、创建一个数据库,test 3、在python的环境安装一个模块:MySQLdb1.2 安装mysql的连接包第一种:工具安装 Python3.x版本:Pip install mysqlclient Python2.x 版本:pip install mysql-python错误 在win7-64bit的环境下会有错误:una
通过python操作mysql和orm操作mysql
python3.0需要安装pymysql 数据连接操作 # Author:dancheng import pymysql #创建链接 conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='123', db='test') #创建游标 cursor = conn.cursor() #执行SQL,并
SpringBoot 开启事务
SpringBoot 开启事务       开启事务 只需在main方法上加注解即可 @EnableTransactionManagement    /* 开启事务 */ @EnableTransactionManagement public class UdeamApplication { public static void main(String[] a...
MVC EF开启事务
using (var tran = BE.Database.BeginTransaction()) { try { //批量操作前 关闭自动检测变化功能 ...
Hibernate事务的开启问题
在对Hibernate进行Demo测试,发现在开启事务时,调用session.beginTransaction(),发现,这时并没有真正的开启事务,而是在事务中执行第一条sql语句的前一刻才真正的开启事务。
SpringBoot+MyBatis多数据源的事务开启
有一些项目需求需要多个数据源,但是这样的项目直接用事务注解不管用。下面是简单解决方法 @Configuration public class DataSourceConfig { /** * 系统管理用户的数据源 * @return */ @Primary @Bean(name = "mgrDataSource") @ConfigurationProperties(pre...
JDBC如何开启事务
先看看一个标准的JDBC例子伪代码:   Connection conn = DriverManager.getConnection(...); try{   con.setAutoCommit(false);   Statement stmt = con.createStatement();   //1 or more queries or updates   ...
CI框架,开启事务
<?php // 开启事务,CI框架 $this->Systems_model->base_connect(); $this->Systems_model->db->initialize(); $this->Systems_model->db->trans_begin(); try { $rs = $this->Systems_...
yii2开启事务
public function actionAdd() { $model = new Goods(); $model->setScenario('insert'); if ($model->load(Yii::$app->request->post())) { ...
【python mysql】数据库 使用Python操作MySQL
MySQLdb 安装:pip install mysql-python加载包 -------------------------------------------------------------------------------- import MySQLdb import MySQLdb.cursors ------------------------------------------
centos 下mysql怎么开启服务
https://zhidao.baidu.com/question/2139322526412320308.html 比如安装步骤是这样的 yum -y install mysql mysql-server mysql-devel 那么启动是这样的 chkconfig –level 35 mysqld on /etc/init.d/mysqld start
spring事务的开启过程
spring事务的开启过程   以springboot为例,只要在service实现类或方法中加上@Transactional注解后,在service实现类在被调用时注入的就是service的代理对象 @Override public Object intercept(Object proxy, Method method, Object[] args, MethodProxy method...
开启事务的注解
对两个表的操做 开启事务的注解 在类上标注@EnableTransactionManagement注解在方法上标注 @Transactional(propagation = Propagation.REQUIRED,rollbackFor=Exception.class)① 同时删除两张表的记录例子@Service @EnableTransactionManagement public class...
spring整合redis(开启事务)
前言 redis整合spring之后 如果需要用到事务,要开启redis的事务管理,redis使用命令multi来开启一个事务,使用命令exec 来提交一个事务,redis和spring整合之后,使用的是 redisTemplate 来操作使用redis的,使用redisTemplate开启事务之后,spring会帮我们拿到了事务中绑定的连接,使用这个相同的链接,多次操作redis是可以异常的回
JdbcUtils 工具类(事务的开启)
jdbcUtils用来获取connection,底层使用了c3p0连接池,还需要mysql驱动! 首先需要导入三个jar的包文件,和一个c3p0的配置文件(c3p0-config.xml),如下图的三个文件,导入后 build path 一下. 下面的三个bar文件 ----> 链接: 三个jar包文件 密码: 549q. 还要导入这个jar包文件(JUnit.jar),用于@te...
thinkphp 开启事务
$model = M();  $model->startTrans(); //开启事务 $model->commit(); //成功提交事务 $model->rollback(); //失败回滚事务   TP5 Db::startTrans(); Db::commit(); Db::rollback();   tp5 请求不同模块方法 action('api...
JDBC底层开启事务
1) JDBC底层开启事务 事务概念:一组SQL语句(指DML),要么同时生效,要么同时失效 作用域:仅仅对DML语句生效(insert,delete,update) 作用对象:必须是同一个Connection对象 jdbctemplate底层必须手动开启 使用 TransactionSynchronizationManager.initSynchro...
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池

相似问题