python学习笔记-数据库补充pymysql

一、pymysql

pymsql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同。

安装

pip install pymysql

用法

# import mysql.connector  #导入MySQL驱动
# db = mysql.connector.connect(host="127.0.0.1",
#                 port=3306,
#                 user="root",
#                 password="123456",
#                 database="test")
# check = db.cursor() #通过获取到的数据库连接db下的cursor()方法来创建游标。
# check.execute("SELECT * FROM tb_sp_hotwords;") #通过游标check操作execute()方法可以写入纯sql语句。通过execute()方法中写如sql语句来对数据进行操作。
# values = check.fetchall()
# print(values)
# check.close() #关闭游标
# db.close()

#使用pymysql模块
import pymysql #导入pymysql模块
db = pymysql.connect(host="127.0.0.1",
                port=3306,
                user="root",
                password="123456",
                database="test")
check = db.cursor() #通过获取到的数据库连接db下的cursor()方法来创建游标。
#check = db.cursor(corsor=pymysql.cursors.DictCursor)
#更改获取数据结果的数据类型,默认是元组,可以改为字典等:conn.cursor(cursor=pymysql.cursors.DictCursor)

check.execute("SELECT * FROM tb_sp_hotwords;") #通过游标check操作execute()方法可以写入纯sql语句。通过execute()方法中写入sql语句来对数据进行操作。
values = check.fetchall()
#check.scroll(1,mode="relative")   # 相对当前位置移动
#check.scroll(1,mode="absolute")   # 相对绝对位置移动

print(values)
check.close() #关闭游标
db.close()

 二、事务

事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。

数据库开启事务命令 

--        start transaction 开启事务
--        Rollback 回滚事务,即撤销指定的sql语句(只能回退insert delete update语句),回滚到上一次commit的位置
--        Commit 提交事务,提交未存储的事务
-- 
--        savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退(与整个事务回退不同) 

例子:

create table test2(id int PRIMARY KEY auto_increment,name VARCHAR(20)) engine=innodb;
INSERT INTO test2(name) VALUE ("mark"),
                              ("jobs"),
                              (“haha");



start transaction;
insert into test2 (name)values('steve');
select * from test2;
commit;


-- 保留点

start transaction;
insert into test2 (name)values('max');
savepoint insert_max;
select * from test2;



delete from test2 where id=4;
savepoint delete1;
select * from test2;


delete from test2 where id=1;
savepoint delete2;
select * from test2;

rollback to delete1;


select * from test2;
View Code

python中调用数据库启动事务的方式

import pymysql

#添加数据

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='', db='yyy')

cursor = conn.cursor()


try:
    insertSQL0="INSERT INTO ACCOUNT2 (name,balance) VALUES ('bob',4000)"
    insertSQL1="UPDATE account2 set balance=balance-30 WHERE name='mark'"
    insertSQL2="UPDATE account2 set balance=balance+30 WHERE name='haha'"

    cursor = conn.cursor()

    cursor.execute(insertSQL0)
    conn.commit()

    cursor.execute(insertSQL1)
    raise Exception
    cursor.execute(insertSQL2)
    cursor.close()
    conn.commit()

except Exception as e:

    conn.rollback()
    conn.commit()


cursor.close()
conn.close()

 

posted @ 2020-08-09 20:05  子不语332  阅读(131)  评论(0编辑  收藏  举报