数据记录操作
准备数据表
==目标:==完成数据表的准备工作。
通常情况下,在使用pymysql模块前,会先创建好数据库和数据表字段信息。
这样,可以更便于后期操作。
例如,使用MySQL命令完成:
(1)创建一个班级db_students数据库,并设定为utf8编码;
(2)在库中新建一个数据表,包含编号id、姓名name、性别gender、年龄age等字段;
(3)其中,字段编号id为整型、主键且自动增长;
(4)操作完成后,查看表结构,并查看表内是否有数据内容。
######################新建库和表#############################
# 创建库
create database if not exists sz38db_students charset utf8;
# 使用库
use sz38db_students;
# 查看表信息
show tables;
# 创建表
create table if not exists student(
id int primary key auto_increment,
name varchar(20),
gender varchar(10),
age int
) engine = InnoDB default charset utf8;
# 查看表字段
desc student;
# 查看表数据
select * from student;
==总结:==
(1)在操作pymysql前,请记得先创建好数据表,便于后面的程序执行。
插入数据
==目标:==掌握pymysql模块插入数据的使用。
当已成功创建好了数据库和数据表,就可以使用pymysql来给表内添加数据了。使用函数:
函数 | 含义 |
---|---|
execute(operate [, param]) | 用于执行SQL语句,返回受影响的行数。 其中,参数operate为字符串类型,表示SQL语句; 参数parameters为列表类型,表示SQL语句中的参数。 |
说明:
param参数是可选项。
例如,使用pymysql模块来完成:
(1)使用execute()向学生表中插入1条学生数据;
(2)使用DataGrip查看添加成功后的数据结果;
(3)思考:如果要插入两条数据,该怎么做呢?
# 1.导入模块
import pymysql
# 2.创建连接对象
db_conn = pymysql.connect(
host="localhost",
port=3306,
user="root",
password="123456",
database="sz38db_students",
charset="utf8"
)
# 3.创建游标对象
db_cursor = db_conn.cursor()
# 4.编写SQL执行
# sql = "insert into student(name,gender,age) values('李思玉','女',19)"
# db_cursor.execute(sql)
# 方式a: values(),();
# 方式b: 两条insert命令
sqla = "insert into student(name,gender,age) values('张鑫','男',28)"
db_cursor.execute(sqla)
sqlb = "insert into student(name,gender,age) values('王潇逸','男',38)"
db_cursor.execute(sqlb)
# *5.提交事务
db_conn.commit()
# 6.关闭游标
db_cursor.close()
# 7.关闭连接
db_conn.close()
print("数据操作已完成!!")
==总结:==
(1)当使用pymysql模块插入数据,必须使用()方法提交事务;A、submit();==B、commit();==
(2)注意:使用PyCharm编写程序插入数据成功后,可以到DataGrip中查看是否已成功添加数据。
修改数据
==目标:==掌握execute()修改数据的使用。
当数据显示有误时,就需要来修改数据内容。使用函数:
函数 | 含义 |
---|---|
execute(operate [, param]) | 用于执行SQL语句,返回受影响的行数。 其中,参数operate为字符串类型,表示SQL语句; 参数parameters为列表类型,表示SQL语句中的参数。 |
说明:
param参数是可选项。
例如,使用pymysql模块来完成:
(1)使用execute()修改学生表中id为1的数据,并把年龄修改为19岁,姓名修改为王军;
(2)使用DataGrip查看修改成功后的数据结果;
(3)思考:能否把性别为男的所有数据,性别都修改为Male呢?
# 1.导入模块 import pymysql # 2.创建连接对象 db_conn = pymysql.connect( host="localhost", port=3306, user="root", password="123456", database="sz38db_students", charset="utf8" ) # 3.创建游标对象 db_cursor = db_conn.cursor() # 4.编写SQL执行 # sql = "update student set age=19,name='王军' where id=3" # db_cursor.execute(sql) sql = "update student set gender='Male' where gender='男'" db_cursor.execute(sql) # *5.提交事务 db_conn.commit() # 6.关闭游标 db_cursor.close() # 7.关闭连接 db_conn.close() print("数据操作已完成!!")
==总结:==
(1)当使用pymysql模块修改数据,要使用commit()方法进行提交事务;
(2)注意:若要修改数据表的数据内容,必须先已存在该数据。
删除数据
==目标:==掌握如何使用execute()删除数据。
当数据内容已失效时,就需要来删除数据内容。使用函数:
函数 | 含义 |
---|---|
execute(operate [, param]) | 用于执行SQL语句,返回受影响的行数。 其中,参数operate为字符串类型,表示SQL语句; 参数parameters为列表类型,表示SQL语句中的参数。 |
说明:
param参数是可选项。
例如,使用pymysql模块来完成:
(1)使用execute()删除学生表中id为2的这条数据;
(2)使用DataGrip查看删除成功后的数据结果;
(3)思考:目前,使用execute()操作数据时,都采用硬编码方式,会存在什么问题吗?
# 1.导入模块 import pymysql # 2.创建连接对象 db_conn = pymysql.connect( host="localhost", port=3306, user="root", password="123456", database="sz38db_students", charset="utf8" ) # 3.创建游标对象 db_cursor = db_conn.cursor() # 4.编写SQL执行 sql = "delete from student where id=2" # 硬编码 # 问题: 1.不够灵活; 2.SQL注入问题. db_cursor.execute(sql) # *5.提交事务 db_conn.commit() # 6.关闭游标 db_cursor.close() # 7.关闭连接 db_conn.close() print("数据操作已完成!!")
==总结:==
(1)当要删除数据记录时,应该使用()关键字;==A、delete==;B、drop;
(2)注意:使用pymysql模块删除数据时,也需要进行提交事务。