MySQL的数据管理
- 前言
- 正文
- 1、新增数据
- 2、删除数据
- 3、修改数据
- 4、查询数据
- 5、案例:员工管理
- 5.1 创建表结构
- 5.1.1 创建数据库
- 5.1.2 创建数据表
- 5.2 Python操作MySQL
- 5.2.1 pymysql 的基本操作步骤
- 5.2.2 优化 pymysql 的基本操作步骤
- 5.2.3 查询数据
- 5.2.4 修改数据
- 5.2.5 删除数据
- 5.2.5 注意事项
前言
在本文中,将深入剖析 MySQL 数据库的核心操作——增删改查(CRUD),并探讨如何利用 Python 的第三方库 pymysql 高效执行这些操作。通过具体案例的展示,读者不仅能够理解 MySQL 的基本语法和逻辑,还能掌握 pymysql 库的使用方法,从而在实际开发中灵活运用,实现数据的精准管理。
正文
平时在开发系统时,一般情况下:
- 创建数据库
- 创建数据表
都是需要提前通过工具+命令创建。
1、新增数据
insert into 表名称(列名,列名, ...) values(值, 值, ...);
insert into 表名称(列名,列名, ...) values(值, 值, ...),(值, 值, ...),(值, 值, ...),...;
2、删除数据
delete from 表名称; --删除所有数据
delete from 表名称 where 条件; --删除指定数据
删除 id = 3 的数据
delete from tb7 where id=3;
3、修改数据
update 表名称 set 列 = 值; --修改一列
update 表名称 set 列 = 值, 列 = 值; --修改多列
update 表名称 set 列 = 值 where 条件; --修改某行某列
4、查询数据
select 字段名(或者*) from 表名称;
select 字段名(或者*) from 表名称 where 条件;
5、案例:员工管理
使用 MySQL 内置工具(命令)
-
创建数据库:unicom;
-
创建数据表:admin;
表名:admin; 列:id,整型,自增,主键;username,字符串,不为空;password,字符串,不为空;mobile,字符串,不为空
-
Python代码实现:
- 添加用户;
- 删除用户;
- 查看用户;
- 更新用户信息;
5.1 创建表结构
5.1.1 创建数据库
create database unicom DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
5.1.2 创建数据表
create table admin(
id int not null auto_increment primary key,
username varchar(16) not null,
password char(64) not null,
mobile char(11) not null
) default charset=utf8;
5.2 Python操作MySQL
用 Python 代码连接 MySQL 并发送指令,需要使用第三方库 pymysql
5.2.1 pymysql 的基本操作步骤
- 创建数据库连接对象+游标对象
- 利用游标对象的 execute() 执行 sql 命令
- 提交到数据库执行:commit()
- 关闭游标+断开数据库连接
import pymysql# 1、创建数据库连接对象+游标对象
conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="123456", charset="utf8", db="unicom")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2、利用游标对象的 execute() 执行 sql 命令
cursor.execute("insert into admin(username,password,mobile) values('Jack','123','17766665555')")# 3、提交到数据库执行:commit()
conn.commit()# 4、关闭游标+断开数据库连接
cursor.close()
conn.close()
5.2.2 优化 pymysql 的基本操作步骤
注意:
千万不要使用字符串格式化做 SQL 的拼接,会有SQL注入的风险,需要使用 cursor.execute(sql, [参数1, 参数2, …]
)
import pymysql# 1、创建数据库连接对象+游标对象
conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", password="123456", charset="utf8", db="unicom")
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2、利用游标对象的 execute() 执行 sql 命令
sql = "insert into admin(username,password,mobile) values(%s,%s,%s)"
cursor.execute(sql, ['LiLei', '000000', '13512349999'])# 3、提交到数据库执行:commit()
conn.commit()# 4、关闭游标+断开数据库连接
cursor.close()
conn.close()
或者:
sql = "insert into admin(username,password,mobile) values(%(n1)s,%(n2)s,%(n3)s)"
cursor.execute(sql, {'n1': 'HanMeimei', 'n2': '123456', 'n3': '11377775555'})
5.2.3 查询数据
import pymysql# 1、创建数据库连接对象+游标对象
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2、利用游标对象的 execute() 执行 sql 命令
sql = "select * from admin where id > %s"
cursor.execute(sql, [1, ])
# 查询所有符合条件的数据,为列表套多个字典
data_list = cursor.fetchall()
# 遍历数据
for row_dict in data_list:print(row_dict)# 3.关闭游标+断开数据库连接
cursor.close()
conn.close()
获取符合条件的第一条数据:cursor.fetone()
5.2.4 修改数据
import pymysql# 1、创建数据库连接对象+游标对象
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2.利用游标对象的 execute() 执行 sql 命令
sql = "update admin set mobile=%s where id = %s"
cursor.execute(sql, ['13088889999', 3])
conn.commit()# 3.关闭游标+断开数据库连接
cursor.close()
conn.close()
5.2.5 删除数据
import pymysql# 1、创建数据库连接对象+游标对象
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='123456', charset='utf8', db='unicom')
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 2.利用游标对象的 execute() 执行 sql 命令
sql = "delete from admin where id = %s"
cursor.execute(sql, [3, ])
conn.commit()# 3.关闭游标+断开数据库连接
cursor.close()
conn.close()
5.2.5 注意事项
-
在进行 新增、删除、修改时,一定记得要 commit ,不然数据库没有数据
cursor.execute("...") conn.commit()
-
在查询时,不需要 commit,执行 fetchall / fetchone
cursor.execute("...")# 第一条数据,字典,无数据时是空列表 cursor.fetchone()# 所有数据,列表套字典,无数据是是None cursor.fetchall()
-
对于 SQL 语句不要用 Python 的字符串格式化进行拼接(会被SQL注入),一定要使用 execute + 参数
cursor.execute(sql, ['xxx', 'xxx', 'xxx'])