Python模块·PyMySQL数据库
2023-01-10 本文已影响0人
技术老男孩
一、PyMySQL实现思路流程
1.建立连接
2.创建游标:游标数据库操作的接口
3.数据库操作(建表、插入数据、查询数据、更新数据、删除数据..)
4.提交事务以及关闭资源
二、实操
步骤一:环境准备(准备数据库)
- 安装 mariadb-server
[root@localhost ~]# yum -y install gcc
[root@localhost ~]# yum -y install mariadb-server
- 启动服务
[root@localhost ~]# systemctl start mariadb
[root@localhost ~]# systemctl enable mariadb
[root@localhost ~]# ss -ntulp | grep mysql
[root@localhost ~]# mysql
- 进入数据库,创建数据库,字符类型为【utf8】
MariaDB [(none)]> CREATE DATABASE tedu1 CHARSET utf8;
步骤二:建立连接
# 建立连接
conn = pymysql.connect(
host="127.0.0.1", # mysql服务所在的主机地址
port=3306, # mysql服务占用的端口号,必须是整数类型
user="root", # mysql服务登录用户名
# password="", # mysql服务登录密码
db="tedu1", # 连接的数据库
charset="utf8" # 指定字符集
)
步骤三:创建游标
- 游标(cursor)就是游动的标识
- 一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行
# 创建游标
cur = conn.cursor() # 创建游标【对数据库进行增删改查】
步骤四:数据库操作
- 创建表:
create_bm = """create table bm2(
bm_id int,bm_name varchar(30)
)"""
cur.execute(create_bm)
- 插入数据
# %s填坑方式传参
insert_bm = "insert into bm values(%s,%s);"
# 单条插入数据
cur.execute(insert_bm, (1, "opt"))
# 多条插入数据
cur.executemany(insert_bm, [
(2, "def"), (3, "1asd"), (4, "UI")
])
- 查询数据
select_bm = "select * from bm;"
cur.execute(select_bm)
# 抓取一个数据结果,相当于read()
print(cur.fetchone())
# 抓取多个数据结果
print(cur.fetchmany(2))
# 抓取剩余数据结果
print(cur.fetchall())
- 修改数据
update_bm = "update bm set bm_name=%s where bm_id=%s"
# 单条数据更新
cur.execute(update_bm, ("开发部", 1))
# 批量数据更新
cur.executemany(update_bm, [
("运维部", 2), ("运维部2", 3), ("运维部4", 4)
])
- 删除数据
delete_bm = "delete from bm where bm_id=%s"
# 单条删除
cur.execute(delete_bm, 4)
# 批量删除
cur.executemany(delete_bm, [1, 2])
步骤五:提交事务及关闭资源
- 提交事务,保证数据写操作成功
conn.commit()
- 关闭资源
# 关闭游标资源
cur.close()
# 关闭数据库连接资源
conn.close()
三、练习案例(员工表 (yg) 相关操作)
需求:
- 员工表有 FIRST_NAME VARCHAR(20),LAST_NAME VARCHAR(20),AGE INT,SEX VARCHAR(1),INCOME FLOAT字段
- 使用 PyMySQL 创建该表
- 使用 PyMySQL 添加以下三条数据
'Mac', 'A', 20, 'M', 20000
'Tom', 'B', 20, 'F', 30000
'Bob', 'C', 20, 'M', 40000 - 使用 PyMySQL 查询所有用户信息,并打印结果
- 将 FIRST_NAME 为 Mac 的用户工资改成 10000
- 删除 FIRST_NAME 为 Tom 的用户信息
import pymysql
# 创建连接
conn = pymysql.Connect(
host="127.0.0.1",
user="root",
port=3306,
db="company",
charset="utf8"
)
# 创建游标
cur = conn.cursor()
- 数据库操作
# 创建表
create_table = """create table yg(
FIRST_NAME VARCHAR(20),
LAST_NAME VARCHAR(20),
AGE INT,
SEX VARCHAR(1),
INCOME FLOAT
);"""
cur.execute(create_table)
# 插入数据
insert_data = "insert into yg values(%s,%s,%s,%s,%s);"
cur.executemany(insert_data, [
('Mac', 'A', 20, 'M', 20000), ('Tom', 'B', 20, 'F', 30000), ('Bob', 'C', 20, 'M', 40000)
])
# 查询数据
select_data = "select * from yg;"
cur.execute(select_data)
# 查询
print(cur.fetchall())
# 修改数据
update_data = "update yg set INCOME=10000 where FIRST_NAME=%s;"
cur.execute(update_data, "Mac")
# 删除数据
delete_data = "delete from yg where FIRST_NAME=%s;"
cur.execute(delete_data, "Tom")
- 提交事务关闭资源
# 提交事务
conn.commit()
# 关闭资源
cur.close()
conn.close()