目录
事务
python操作mysql数据库的步骤
事务
事务具有的特性:原子性、一致性、隔离性、持久性
python连接mysql后,数据库默认开启事务,开启事务后,操作的数据写入缓存区,当事务提交后,操作的数据才会保存。所以在对表数据进行增、删、改之后,要使操作生效就需要提交事务。
开启事务:start transaction; # 如果是和数据库连接,会自动开启,不需要执行
提交事务:commit;
回滚:rollback;
python操作mysql数据库的步骤
创建连接(connection)——>获取游标(cursor)——>执行数据库命令操作(sql)——>提交事务(commit)或回滚(rollback)——>关闭游标——>关闭连接
完整流程:
import pymysql
config = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='qwe123',charset='utf8')
cur = config.cursor()
try:
def insertdata(id,name):
cur.execute('use 数据库1')
cur.execute(f"insert into 学生表 values ({id},'{name}')")
config.commit()
insertdata(1,'中国')
except Exception as e:
print('一个错误:',e)
config.rollback()
finally:
cur.close()
config.close()
连接数据方法示例:
import pymysql # 导入模块
# 两种连接数据库对象的的参数写法
sql_config ={
'host':'127.0.0.1',
'port':3306,
'user':'root',
'password':'qwe123',
# 'db':'databasename', # 在不需要创建数据库,而是直接调用某个数据库的时候可以加上这个参数
'charset':'utf8'
}
connection = pymysql.connect(**sql_config) # 连接mysql,创建一个数据库对象
# connect = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='qwe123',db='mysql',charset='utf8')
# 创建游标,mysql的语句都是通过游标对象来执行的
curs = connection.cursor()
# 创建数据库和使用数据库
curs.execute('create database 数据库2') # 创建数据库
curs.execute('use 数据库2') # 使用数据库
# 创建数据表
table1 = '''
create table 学生表(
id int(10) primary key,
name varchar(20) not null)
'''
curs.execute(table1)
# 查看表结构
curs.execute('desc 学生表')
print(curs.fetchall())
# 插入表数据
sql_insert = '''
insert into 学生表
values (2020001,'过去'),(2020002,'现在'),(2020003,'将来')
'''
curs.execute(sql_insert)
curs.execute('select * from 学生表') # 执行查看表数据的sql语句
# 查看数据内容的方法
print(curs.execute('show databases')) # 如果是通过游标对象的execte()方法查看数据库结果,只展示查询出来的数据数量
# print(curs.fetchone()) # 只查看第一条数据
# print(curs.fetchmany(2)) # 查看多条数据,参数为指定查询的数据数量
print(curs.fetchall()) # 查看所有数据
# 使用完数据库的后续操作
connection.commit() # 每次对表数据的增删改都需要提交事务后,数据才能真正写入数据库,提交事务的方法:对创建数据库对象使用commit()方法
# 同文件操作一样,在每次使用完数据库之后都需要断开游标和数据库
curs.close() # 断开游标
connection.close() # 关闭数据库