本文转自https://www.freeaihub.com/article/using-pymysql-to-operate-mysql-in-python.html,该页可在线进行本页内容的实验
本节实验您将先进行MySQL的安装,再安装python的pymysql库,通过这个库连接到MySQL数据库,创建并使用游标Cursor执行SQL语句,最终提交事务以实现对MySQL数据库中的CRUD操作,如新增数据,查询数据,更新数据和删除数据的常用操作。
MySQL是一种应用广泛的关系型数据库,MySQL相关教程动手学mysql。
安装并配置MySQL
请前往该页进行安装并确认安装是否成功MySQL环境安装及配置
配置数据库,用户名及密码
在右侧实验区默认ssh界面下输入
mysql
进入mysql环境后输入如下命令
CREATE DATABASE python;
GRANT all ON *.* TO ‘testuser‘@‘%‘ IDENTIFIED BY ‘123123‘;
exit;
安装pymysql包
!pip3 install PyMySQL -i https://pypi.tuna.tsinghua.edu.cn/simple/
连接数据库
import pymysql
db = pymysql.connect("localhost","testuser","123123","python" ) # 打开数据库连接
#创建游标
cursor = db.cursor()
cursor.execute("SELECT VERSION()") # 使用 execute() 方法执行 SQL 查询
data = cursor.fetchone() # 使用 fetchone() 方法获取单条数据
print ("Database version : %s " % data)
db.close()
创建表格
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","123123","python" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL,如果表存在则删除
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")
# 使用预处理语句创建表
sql = """CREATE TABLE EMPLOYEE (
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT )"""
cursor.execute(sql)
# 关闭数据库连接
db.close()
插入数据
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","123123","python" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,LAST_NAME, AGE, SEX, INCOME)
VALUES (‘Nancy‘, ‘Liliy‘, 20, ‘M‘, 3000)"""
try:
cursor.execute(sql) # 执行sql语句
db.commit() # 提交到数据库执行
except:
db.rollback() # 如果发生错误则回滚
# 关闭数据库连接
db.close()
验证:
进入右侧实验ssh容器,输入mysql
进入mysql数据库命令行界面,进行验证。
select * from python.EMPLOYEE;
exit;
查询操作
fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。
- fetchone(): 该方法获取下一个查询结果集。结果集是一个对象
- fetchall(): 接收全部的返回结果行.
- rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","123123","python" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 查询语句
sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s" % (1000)
try:
cursor.execute(sql)# 执行SQL语句
results = cursor.fetchall()# 获取所有记录列表
for row in results:
fname = row[0]
lname = row[1]
age = row[2]
sex = row[3]
income = row[4]
print ("fname=%s,lname=%s,age=%s,sex=%s,income=%s" % (fname, lname, age, sex, income ))
except:
print ("Error: unable to fetch data")
# 关闭数据库连接
db.close()
更新数据
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","123123","python" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 更新语句
sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = ‘%c‘" % (‘M‘)
try:
cursor.execute(sql) # 执行SQL语句
db.commit() # 提交到数据库执行
except:
db.rollback() # 发生错误时回滚
# 关闭数据库连接
db.close()
验证:
进入右侧实验ssh容器,输入mysql
进入mysql数据库命令行界面,进行验证。
select * from python.EMPLOYEE;
exit;
删除操作
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","123123","python" )
# 使用cursor()方法获取操作游标
cursor = db.cursor()
# SQL 删除语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:
cursor.execute(sql) # 执行SQL语句
db.commit() # 提交修改
except:
db.rollback() # 发生错误时回滚# 关闭连接
db.close()
验证:
进入右侧实验ssh容器,输入mysql
进入mysql数据库命令行界面,进行验证。
select * from python.EMPLOYEE;
exit;
总结
通过本节的在线实践,您将掌握如何安装mysql数据库和pymysql包,以及如何通过python来进行常见MySQL数据库操作。pymysql的使用流程是,1,获取与数据库的连接 2,执行sql语句与存储过程 3,关闭数据库连接。