python专区--PyMySQL

准备数据库

  1. 安装 mariadb-server
  2. 启动服务
  3. 创建名为haha 的数据库【utf8】
[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
# 创建数据库 haha
# none:表示当前在哪个数据库操作
MariaDB [(none)]> CREATE DATABASE haha CHARSET utf8;

PyMySQL 模块应用

连接数据库

创建连接是访问数据库的第一步

import pymysql
conn = pymysql.connect(
    host='127.0.0.1', 
    port=3306, 
    user='root',
    db='haha', 
    charset='utf8'
)

游标

  • 游标(cursor)就是游动的标识
  • 通俗的说,一条sql取出对应n条结果资源的接口/句柄,就是游标,沿着游标可以一次取出一行
cur = conn.cursor()  # 创建游标【对数据库进行增删改查】

创建表

# 建立部门表,员工表,工资表
# 定义创建departments【部门表】sql命令
create_dep = '''CREATE TABLE departments(
	dep_id INT, dep_name VARCHAR(50)
)'''
cur.execute(create_dep)  # 执行sql语句create_dep

插入数据

对数据库表做修改操作,必须要 commit

#向部门表中插入数据
insert_dep = 'INSERT INTO departments VALUES (%s, %s)'	# 定义插入数据的变量,%s为占位符
cur.execute(insert_dep, (1, '人事部'))  # 执行sql语句insert_dep, 插入一条记录
cur.executemany(  # executemany(), 执行sql语句insert_dep, 同时插入多条记录
    insert_dep, 
    [(2, '运维部'), (3, '开发部'), (4, '测试部'), (5, '财务部'), (6, '市场部')]
)
conn.commit()

查询数据

可以取出表中一条、多条或全部记录

sql4 = "SELECT * FROM departments"
cur.execute(sql4)
result = cur.fetchone()
print(result)

result2 = cur.fetchmany(2)
print(result2)

result3 = cur.fetchall()
print(result3)

修改数据

通过 update 修改某一字段的值

# 更新部门表【departments】中的数据
update_dep = 'UPDATE departments SET dep_name=%s WHERE dep_name=%s'
cur.execute(update_dep, ('人力资源部', '人事部'))
conn.commit()

删除记录

通过 delete 删除记录

#删除部门表【departments】中的id为6的数据
del_dep = 'DELETE FROM departments WHERE  dep_id=%s'
cur.execute(del_dep, (6,))
conn.commit()

练习 :员工表 (EMPLOYEE) 相关操作

需求

  1. 员工表有 FIRST_NAME VARCHAR(20),LAST_NAME VARCHAR(20),AGE INT,SEX VARCHAR(1),INCOME FLOAT字段
  2. 使用 PyMySQL 创建该表
  3. 使用 PyMySQL 添加以下三条数据
    1. ‘Mac’, ‘A’, 20, ‘M’, 20000
    2. ‘Tom’, ‘B’, 20, ‘F’, 30000
    3. ‘Bob’, ‘C’, 20, ‘M’, 40000
  4. 使用 PyMySQL 查询所有用户信息,并打印结果
  5. 将 FIRST_NAME 为 Mac 的用户工资改成 10000
  6. 删除 FIRST_NAME 为 Tom 的用户信息
import pymysql
# 打开数据库连接
db = pymysql.connect(
    host='127.0.0.1', 
    port=3306, 
    user='root',
    db='haha', 
    charset='utf8'
)
# 使用 cursor() 方法创建一个游标对象 cursor
cur = db.cursor()

##########################################################
# 创建表
sql = """CREATE TABLE EMPLOYEE (
    FIRST_NAME  VARCHAR(20) NOT NULL,
    LAST_NAME  VARCHAR(20),
    AGE INT,  
    SEX VARCHAR(1),
    INCOME FLOAT 
)"""
cur.execute(sql)
##########################################################
# SQL 插入语句
sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
         LAST_NAME, AGE, SEX, INCOME)
         VALUES (%s, %s, %s, %s, %s)"""
cur.executemany(  # executemany(), 执行sql语句, 同时插入多条记录
    sql, [
        ('Mac', 'A', 20, 'M', 20000), 
        ('Tom', 'B', 20, 'F', 30000), 
        ('Bob', 'C', 20, 'M', 40000)
    ]
)
db.commit()
##########################################################
sql = "SELECT * FROM EMPLOYEE"
cur.execute(sql)
result = cur.fetchone()
print(result)
result2 = cur.fetchmany(2)
print(result2)
##########################################################
sql = 'UPDATE EMPLOYEE SET INCOME=%s WHERE FIRST_NAME=%s'
cur.execute(sql, (10000, 'Mac'))
db.commit()
##########################################################
sql = 'DELETE FROM EMPLOYEE WHERE FIRST_NAME=%s'
cur.execute(sql, ("Tom",))
db.commit()
# 关闭数据库连接
cur.close()
db.close()

猜你喜欢

转载自blog.csdn.net/m0_52508197/article/details/127294136