简介
- 开启事务:conn.begin()
- 提交事务:conn.commit()
- 回滚事务:conn.rollback()
示例
建表
在 blog 库下建表:
create table `user_info` (
`id` bigint unsigned not null auto_increment,
`name` varchar(45) not null default '',
primary key (`id`)
) engine = InnoDB default charset = utf8mb4;
插入数据,数据内容如下:
mysql> select * from user_info;
+----+---------+
| id | name |
+----+---------+
| 2 | name001 |
| 3 | name002 |
| 4 | name003 |
| 5 | name004 |
| 6 | name005 |
| 7 | name006 |
+----+---------+
6 rows in set (0.01 sec)
示例1:开启和提交事务
import pymysql
conn = pymysql.connect(host='127.0.0.1',
user='root',
password='123456',
port=3306,
database='blog',
autocommit=True
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
conn.begin()
cursor.execute('INSERT INTO `user_info` (name) values(%s);', ['name100'])
cursor.execute('INSERT INTO `user_info` (name) values(%s);', ['name101'])
conn.commit()
cursor.close()
conn.close()
示例2:回滚事务
import pymysql
conn = pymysql.connect(host='127.0.0.1',
user='root',
password='123456',
port=3306,
database='blog',
autocommit=True
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
try:
conn.begin()
cursor.execute('INSERT INTO `user_info` (name) values(%s);', ['name102'])
cursor.execute('INSERT INTO `user_info` (name) values(%s);', ['name103'])
raise Exception('模拟异常')
conn.commit()
except Exception as ex:
print('出现异常,回滚')
conn.rollback()
cursor.close()
conn.close()