目录
参考文档:Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程 (runoob.com)
Mysql事务的学习请参考:(13条消息) Mysql 事务 - 锁_Claylpf的博客-优快云博客
参考文档:Python3 MySQL 数据库连接 – PyMySQL 驱动 | 菜鸟教程 (runoob.com)
python里能够操控Mysql的库有哪些:
1、mysql-connector 官方
2、pymysql 社区
3、records
使用pymysql连接Mysql数据库
步骤:
1、我们先在linux里安装python3
[root@mysql ~]# yum install python3 -y
2、然后安装pymysql库
[root@mysql ~]# pip3 install pymysql
3、我们创建一个use_mysql.py文件(用来写连接mysql数据库的程序)
4、我们需要建立一个用户用来远程连接我们的Mysql数据库
例如:
5、use_mysql.py脚本的内容(获取sc_student表里所有的数据,打印到屏幕上,并在emp表里插入数据,将插入的数据打印到屏幕上。)
[root@mysql lianxi]# cat use_mysql.py
#!/usr/bin/python3
#导入pymysql库
import pymysql
#连接到数据库里面去
db = pymysql.connect(host='172.20.10.9', user='booksql', password='123456', database='sc', port=3306)
#使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
#使用 execute() 方法执行 SQL 查询
cursor.execute("select * from sc_student;")
#使用 fetchall() 方法获取多条数据(从游标对象cursor中去出多条数据保存到data对象中,使data对象成为元组).
data = cursor.fetchall()
#输出表里的所有数据
print("查询的数据为:")
for i in data:
print(i)
sql = "select * from emp;"
#加入异常处理,如果插入成功就commit提交,不成功就rollback回滚
try:
#插入数据到emp表里 使用 execute() 方法执行 SQL 查询
sql2 = "insert into emp(id,name,deptid) values(4,'王五',30);"
cursor.execute(sql2)
#当我们执行插入insert,更换update,删除delete的时候,Mysql都会开启一个事务,都必须使用commit提交到磁盘中,否则数据就不会保存到表内(mysql事件)
db.commit()
except:
#当我们的事件出现错误的时候,必须使用rollback进行回滚操作
db.rollback()
cursor.execute(sql)
#使用 fetchall() 方法获取多条数据(从游标对象cursor中去出多条数据保存到data对象中,使data对象成为元组).
data2 = cursor.fetchall()
#输出表里的所有数据
print("emp表所有的数据为:")
for i in data2:
print(i)
#关闭数据库连接
db.close()
[root@mysql lianxi]#
数据库查询操作
Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
6、执行use_mysql.py脚本
注:其实我们在使用pymysql连接Mysql的时候,它默认会将我们的autocommit给关闭了,因此当我们在表中更改数据的时候,Mysql会开启一个事务,我们必须使用commit()函数进行提交操作,否则的话,我们的数据就会只保存在内存中(关闭该连接,数据就会消失),无法上传到磁盘当中(永久保存)。