MySQL事务
事务是数据库处理操作,其中执行就好像它是一个单一的一组有序的工作单元。换言之,事务将永远不会是完全的,除非在组内每个单独的操作是成功的。如果事务中的任何操作失败,整个事务将失败。
在MySQL中,事务以BEGIN WORK语句开始开始工作,并使用COMMIT或ROLLBACK语句结束。SQL命令在开始和结束语句之间构成大量事务。
提交和回滚
这两个关键字Commit和Rollback主要用于MySQL的事务。
- 当一个成功的事务完成后,COMMIT命令发出的变化对所有涉及的表将生效。
- 如果发生故障,ROLLBACK命令发出后,事务中引用的每个表将恢复到事务开始之前的状态。
事务性质
事务具有以下四个标准属性,通常由首字母缩写ACID简称(atomicity,consistent,isolation,durable):
- 原子性: 确保了工作单位中的所有操作都成功完成; 否则,事务被中止,在失败时会被回滚到事务操作以前的状态。
- 一致性:可确保数据库在正确的更改状态在一个成功提交事务。
- 隔离: 使事务相互独立地操作。
- 持久性: 确保了提交事务的结果或系统故障情况下仍然存在作用。
在MySQL中,事务以BEGIN WORK语句开始开始工作,并使用COMMIT或ROLLBACK语句结束。SQL命令在开始和结束语句之间构成大量事务。
Mysql与Python
python具有内置的pymysql模块,
安装PyMysql:pip3 install PyMysql
连接pymysql
#导入包
import pymysql
#建立数据库连接
db = pymysql.connection('localhost','root','123456','jing_dong')
#使用cursor()方法获取一个游标
cursor = db.cursor()
#执行sql语句来查询版本信息的方法
cursor.execute("select version()")
#使用fetchone()方法获取一条数据
data = cursor.fetchone()
print(data)
#关闭连接
db.close()
创建数据库
import pymsql
db = pymysql.conection('localhost','root','123456','jing_dong')
cursor = db.cursor()
#若表存在则删除
cursor.execute("DROP TABLE IF EXISTS student")
#准备建表语句
sql = """create table student"(
id int not null auto_increment,
name char(20) not null,
age int default null,
sex bit default,
score float default,
primary key(id)
)engine=InnoDB default charset=UTF-8;;"""
cursor.execute(sql)
db.close()