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()
0

2个回答

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

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

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

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于mysql-python的简单事务操作
在上篇博客中主要介绍了关于使用mysql-python进行简单的数据库操作。本篇博客主要是使用篇博客的内容,然后添加事务操作。内容很简单,就是在操作出现错误的时候回退所有未提交的操作。
python 使用MySQLdb 和 pymysql的时候手动提交事务的解决办法
最近在使用Python写一个高并发的接受http请求并入库的模块。 n再使用python 操作mysql的时候,使用了其pymysql模块,但是在进行插入操作的时候,必须使用受到提交事务,数据库中才能有数据。也就是必须使用commit() n但是mysql的自动开启事务且执行的。 nmysql> show variables like ‘autocommit’; n+—————+——-+ n| Va
navicat for mysql 对事务的操作
数据表 student n n表teacher n n课程表course nnn成绩表sc n n首先,开始一个事务。nnSTART transaction ;nn第一个sql语句:二班 转学生 殷离 和 曾啊牛 n添加学生信息到student表: ‘殷离’,’女’,’18’,’二班’ 和 ‘曾阿牛’,’男’,’10’,’二班’nnINSERT into student (Sname,Ssex...
Python的mysql操作(事务、游标)
1、mysql事务rnMySQL事务主要用于处理操作量大,复杂度高的数据。rn比如,你操作一个数据库,公司的一个员工离职了,你要在数据库中删除他的资料,也要删除该人员相关的,比如邮箱,个人资产等。这些数据库操作语言就构成了一个事务。rnrn在MySQL中只有使用了Innodb数据库引擎的数据库或表才支持事务,所以很多情况下我们都使用innodb引擎。rn事务处理可以用来维护数据库的完整性,保证成批
php mysql 开启事务
mysql_query("SET AUTOCOMMIT=0"); //设置mysql不自动提交,需自行用commit语句提交n$res1 = mysql_query($sql1);n$res2 = mysql_query($sql2);nif ($res1 && $res2) {n mysql_query("COMMIT");//提交事务n}else{n mysql_query("RO
mysql 事务操作详细实例介绍
mysql事务操作详细介绍
MySQL数据库事务基本操作
这篇日志是自己学习了MySQL数据库的事务之后,总结的一点心得体会。都是一些非常基础的知识点。如能帮助诸位初学者,那真是我的荣幸。n数据库的事务,很多的博客也都有了详细的介绍。最基本的事务特性啊(ACID)这里就不再赘述。n首先,如果想要开启MySQL数据库的事务,需要我们手动设置。**1、开启数据库的事务**n我们在Navicat中,新建一个查询,输入:`start transaction;`**
数据库中事务操作(SQLAlchemy)
启动Flask:rnrnrnrnexport FLASK_APP=flaskrrnexport FLASK_ENV=developmentrnflask runrnrn可使用db.relationship()把数据库的不同行联系起来,建立一对多的关系,db.relationship()的第一个 rn参数表明关系的另一端是哪个模型,其他可选参数如下: rnbackref 在关系的另一个模型中添加反向引...
mysql navicate 开始事务操作方法
-
Python---mysql数据库事务
事务:假设你要删除一个学生管理系统的学员,则不但要删除学员基本信息,也要删除与学员相关的信息,这就是一个事务。事务独立运行,一组事务,要么成功,要么撤回。mysql默认使用Innodb数据库引擎,也只有使用此引擎数据库才支持事务。事务处理可以维护数据库的完整性,管理insert,update,delete.1.启动事务2. 插入数据3.回滚  #事务结束,数据不会写入4.正常写入 commit;...
[MySQL]数据库中如何处理多事务
0.READMEnnnn本文介绍了事务的基本概念,常用的四个命令,事务的四个特性,最后介绍多事务处理中的可能出现的三种问题,以及对应的四个隔离等级。nnnnnn1.什么是事务nnnn事务处理用来维护数据库的完整性,保证成批的MySQL操作要么完全执行,要么完全不执行。nn比如,假设有两个表,账户表money,和支出表pay,那么每一笔支出记录对应就要从余额表中删除一定金额,如果pay插入成功,mo...
数据库多表操作事务处理
在需要同时插入多条数据时,这其中可能是同一个表的多条记录,也可能是多个不同表之间的数据同时更新。对此,我们需要保证其中的原子性和一致性,做到要么全部操作都能全部成功完成,否则全部不操作。n 我们可以通过SQL的事务来对相关数据库操作进行处理,在开始conn.setAutoCommit(false);(conn是或得的连接)把本次运行的SQL操作改为非自动运行,在配置好各SQL语句之后,调用conn.commit();来运行,其中通过try{……}catch……来捕捉异常,如果遇到错误时,就调用co
在ecshop中使用MySQL事务
情况说明 :nn       最近供应商转账这个操作,偶尔会出现重复提现的情况:当然微信转账一次,本地系统余额扣了两次,导致供应商余额为负数nn分析:nn     这种情况开始这是一次并发,因为实际重复扣钱的那两笔的确是同一时间插入的,但是用户余额也相应的减少,这样一来,这是一起重复提交数据的操作,form表单重复提交这种情况也是有的,但是我不想从前端控制,基本没有办法,就决定使用mysql事务从...
mysql在存储过程中开启事务保证会话的原子性
在一个存储过程中开启会话nn nnnBEGINnn #set autocommit=false;n #开启n START TRANSACTION;n n 要执行的操作nn commit;n #提交操作n #set autocommit=true;nENDnn 
PHP中 pdo关于mysql事务操作
事务处理具有四个特性:原子性、一致性、独立性、持久性。nn
Mysql事务操作的坑
首先简单介绍一下数据库事务这一概念,事务:对数据库的一系列操作都可以称之为事务,但是与正常的数据库操作(增删改查这类的)的不同的是,事务的操作具有完整性,并且在一个事务的最后,需要一个commit或者rollback来结束一个事务。而在commit之前,之前所有的操作命令其实都没有“真正”意义上的写入数据库中,与之对应的而如果使用了rollback,则这次的事务之前做的所有操作都会撤销,数据库会回滚
golang中如何使用mysql事务
导入n "database/sql"n "github.com/go-sql-driver/mysql"n类包nnTx,_ := connectMysql.Begin()nstm,_ := Tx.Preapare("insert into test values(?,null)")nresult,_ := stm.Exec('123')nerror := Tx.Commit()或者er
Qt启动事务操作
Qt启动事务操作
python 多人连接mysql 进行事务操作 对mysql加锁与释放锁
python 多人连接mysql 对mysql进行事务操作 对mysql加锁与释放锁n下面这个是user1代码块n# -*- coding: utf-8 -*-n# user1 nimport pymysqlnimport timennconn = pymysql.connections.Connection(host="localhost", user='debian-sys-maint...
java Jdbc连接数据库 +mysql提交事物+事物的四种特性
一、jdbc链接mysql   1、将jar包导入项目    (1) 在工程下面创建一个文件夹 lib     (2)将数据库的驱动jar包赋值到lib下    (3)右击jar包 build path ——》 add build path   2、创建Driver接口变量   3、创建好连接数据库的基本信息   4、通过dirver.connet(url,info);得到数据库的连接对象    ...
C# mysql 事务处理
try            {                using (MySqlConnection conn = new MySqlConnection("Database=pay2017;Data Source=127.0.0.1;User Id=root;Password=123456;pooling=false;CharSet=utf8"))                {   ...
laravel框架中的MySQL事务处理
在操作数据库中,实现一个功能时有时候会多次操作数据库,在多次操作数据库时,就会有可能出现其中一条sql语句执行成功,而另一条sql语句执行失败。这样的话就会出现很严重的问题,所以可以用MySQL的实物处理来解决这个问题。rnlaravel中的事物:rn假如说:有一个用户表(user)rn里面有两个字段,username,passwordrnpassword字段设置为char(32),固定长度。rn
MySQL表数据&事务
MySQL表基本操作nn查询表数据nselect * from 表名;#查询表中所有数据nselect 字段1,字段2 from 表名;#查询字段1,字段2数据nselect * from 表名 where 字段1[ = | > | < ]'string';#查询字段1为string数据nselect * from 表名 where 字段1 like '
MySql之commit、rollback等事务控制命令
#commit、rollback用来确保数据库有足够的剩余空间;rn#commi、rollback只能用于DML操作,即insert、update、delet;rn#rollback操作撤销上一个commit、rollback之后的事务。rn rncreate table testrn(rn PROD_ID varchar(10) not null,rn PROD_DESC varchar(25)
mysql命令行执行SQL开启事务
nMySQL默认采用自动提交(AUTOCOMMIT)模式,不是显示的开启一个事务,每个查询都被当作一个事务执行提交操作。rn在当前连接中,可以通过设置AUTOCOMMIT变量来开启或者禁用自动提交功能。rn rnmysql> show variables like 'AUTOCOMMIT';+---------------+-------+| Variable_name | Value |+...
SQLAlchemy 嵌套事务的处理方式
博由nJust Do如何实现解决上述问题n创建表nsqlalchemy 实现博由 sqlachemy 是python的orm框架,在使用一段时间后,我们通常会出现事务嵌套的情况,看到很多人写代码的时候,居然是session到处传递,这无疑是加大了代码之间的耦合度。n 案例:n def save(session):n # TODO def update(sessi
go mysql事务代码示例
        在mysql中,可用begin, commit/rollback命令来操作,下面来看go代码操作:nnnpackage mainnnimport (n "fmt"n "database/sql"n _ "github.com/go-sql-driver/mysql"n)nnfunc main() {n db, _ := sql.Open("mysql", "root...
nodejs操作MySQL,mysql连接池及事务的使用
本篇,我们介绍下,nodejs中访问mysql数据库,采用mysql官方驱动nnnpm install mysql --savenn02_curd.jsnnnvar mysql = require('mysql');n nvar connection = mysql.createConnection({n host : 'localhost',n user :...
查看mysql建立的表是否支持事物
n在命令行或者命令行工具中用:rn show create table tablename rn rn ENGINE=InnoDB 此时这个表支持事物。rn如果不是的话。就是不支持。。rn可以通过修改配置文件类让create生成的表自动支持事物。rnwindows. 是 my.inirn rn# The default storage engine that will be used when c...
Python中使用SQLAlchemy连接Mysql数据库3(事务,编码)
在http://blog.csdn.net/u011573853/article/details/51355113和 nhttp://blog.csdn.net/u011573853/article/details/51363780分别介绍了单表和多表的操作,下面说一下其他问题 n1,如何让执行的 SQL 语句增加前缀?如一些执行级别 n使用 query 对象的 prefix_with() 方法:#
c# mysql事务的简单应用
代码如下 :nnusing System;nusing System.Collections.Generic;nusing System.Text;nusing MySql.Data.MySqlClient;nusing System.Data;nnnamespace _14._9connection链接数据库n{n    class Programn    {n        static vo...
【TP5 :数据库】事务操作
事务操作nn使用事务处理的话,需要数据库引擎支持事务处理。比如 MySQL 的 MyISAM 不支持事务处理,需要使用 InnoDB 引擎。nn使用 transaction 方法操作数据库事务,当发生异常会自动回滚:nn自动控制事务处理nnnnDb::transaction(function(){n Db::table('think_user')->find(1);n Db::t...
MySQL多事务并发控制
MySQL的默认隔离级别是可重复读。n若两个事务A和B操作同一资源,A和B都通过begin开启事务后,若A只存在读操作,则B可以对数据进行写操作,且B的写操作不会影响A的读,即A每次读到的内容都是一致的(就算B已经提交)。n若A进行了写操作,则B的读操作不受影响,但B的写操作会被阻塞,直到A提交了事务或者到达超时时间。值得注意的是,B可以对另外的行进行写操作,即如果A更改了第一行数据,那B改第
【mysql】【事务的开启与提交】
成功的start transaction;(开始事务)commit;(结束事务)失败的start transaction;(开始事务)rollback;(事务结束回滚)
Python笔记day45(MySQL)|视图、触发器、存储过程、函数、事务、pymsql模块
1,视图nn视图是一个虚拟表(非真实存在),其本质是【根据SQL语句获取动态的数据集,并为其命名】,用户使用时只需使用【名称】即可获取结果集,并可以将其当作表来使用。nnnnSELECTn *nFROMn (n SELECTn nid,n NAMEn FROMn tb1n WHE...
Mysql数据库事务在jdbc中的用法
事务:保证操作的一致性,要么操作同时成功,要么同时失败;n最经典的例子就是转账:A向B转账,如果转账成功,那么必然A的钱减少,B的钱增多;如果转账失败,那么必然是A和B的余额都没有发生变化;这个例子就用到了事务操作;nMysql 对事物的支持:n序号          命令                                  描述n1               set au
c语言mysql数据库事务开始、提交、回滚范例
1、 事务提交模式修改:修改数据库提交模式为0[手动提交]rnmemset ( sql, 0x00, sizeof( sql ) );rnmemcpy ( sql, "set autocommit=0;", 17 );rnif( mysql_query( sock, sql ) ){rnsprintf( g_acTrcMsg, "关闭自动提交模式失败[%d][%s]", mysql_errno( 
Java中的mysql事务处理
一、事务是一组要么同时执行成功,要么同时执行失败的sql语句。是数据库操作的一个执行单元。rn2、事物的四大特点:rn(1)atomicity(原子性)表示一个事务内的所有操作是一个整体,要么全部成功,要么全部失败。rn(2)consistency(一致性)表示一个事物内有一个操作失败时,所有更改过的数据都必须回滚到修改前的状态。rn(3)isolation(隔离性)事务查看数据时数据所处的状态,
tornado_mysql的pool使用事务的方法。
#/usr/bin/env pythonn#coding=utf-8nn'''nCreated on 2017-02-20nn@author: chenjiahuin'''nnimport sys,osnfrom config import *nfrom tornado_mysql import poolsnndata_time=''nndef create_pool():n print D
mysql数据库查询和事务
MySQL查询:#检查“Logic Java”课程最近一次考试成绩n#如果有 80分以上的成绩,显示分数排在前5名的学员学号和分数nSELECT r.studentno AS 学生编号,r.studentresult AS 学生成绩 FROM result rnWHERE subjectno=(SELECT subjectno FROM SUBJECT WHERE subjectname='jav...
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 区块链怎么操作 python怎么学好