【Django学习笔记(八)】MySQL的数据管理

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 的基本操作步骤
  1. 创建数据库连接对象+游标对象
  2. 利用游标对象的 execute() 执行 sql 命令
  3. 提交到数据库执行:commit()
  4. 关闭游标+断开数据库连接
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'])
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7445.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用 Gitea 进行私有 Git 仓库管理

在本文中,我们将介绍如何使用 Gitea 搭建并管理私有 Git 仓库。Gitea 是一个轻量级的 Git 服务,提供了类似于 GitHub 的功能,适合个人和小团队使用。我们将通过以下步骤来完成搭建和配置 Gitea 服务器。 步骤一:安装 Gitea 首先…

spss 导入数据的时候 用于确定数据类型的值所在的百分比95%是什么意思,数据分析,医学数据分析

在SPSS中,当提及“数据类型的值所在的百分比95%”时,这通常与数据的统计分布或置信区间有关,而不是直接关于数据类型的定义。 导入数据的时候需要定义数据类型,那么根据提供的数据,来定义,有时候&#xff…

【每天一个linux小知识】如何使用 oh-my-zsh 让使用zsh更高效

往期文章 tailf 和 tail -f nslookup 目录 往期文章对比演示zshoh-my-zsh安装自动提示、补全、语法高亮等插件参考 对比演示 使用 oh-my-zsh 之前: 使用 oh-my-zsh 之后: zsh 要使用oh-my-zsh前提是使用zsh。所以第一步安装zsh 可以看一下你的系统…

跟TED演讲学英文:What moral decisions should driverless cars make by Iyad Rahwan

What moral decisions should driverless cars make? Link: https://www.ted.com/talks/iyad_rahwan_what_moral_decisions_should_driverless_cars_make Speaker: Iyad Rahwan Date: September 2016 文章目录 What moral decisions should driverless cars make?Introduct…

字节人都用的婚恋交友相亲平台有哪些?聊聊互联网大厂的人是怎么脱单的!

虽然在字节这样的公司上班,也算是人中之人了。但是也耐不住29岁了,快成大龄剩女了。迫于长辈的催婚压力,所以带着任务体验了一遍各大相亲交友平台,以下是我的使用感受。 1、青藤之恋:偏相亲定位,曾经高学历…

Flask gevent启动报错UnicodeDecodeError

文章目录 环境代码报错Track解决思路 环境 acondana 24.1.2python 3.7.13 32bitflask 2.2.3gevent 21.8.0 代码 port 7236 logging.basicConfig(levellogging.INFO, # 控制台打印的日志级别filename./logs/app.log, # 将日志写入log_new.log文件中filemodea, # 模式&…

移动硬盘无法被识别怎么办?恢复移动硬盘3个正确做法

移动硬盘已成为我们日常生活和工作中不可或缺的数据存储设备。然而当移动硬盘突然无法被电脑识别时,往往会让人倍感焦虑。面对这种情况我们不必过于慌张,下面一起来看看指南解决。 解决方法一:检查硬件连接与供电 检查接口连接&#xff1a…

手机短信删除了还能恢复吗?该怎么恢复呢?

在我们的日常生活中,手机短信已经成为我们与他人沟通的重要方式之一。然而,有时候我们会不小心删除了一些重要的短信,这时候就非常希望能够恢复它们。那么,手机短信删除了还能恢复吗?该怎么恢复呢?本文将告…

百度Comate:你的智能编程助手,让代码编写更高效

一、引言 随着AI和人工智能技术的快速发展,越来越多的行业开始尝试将AI技术应用于实际业务中,包括编程领域。目前逐渐有大量的IT开发工程师开始使用各类的AI工具来帮助改善编程体验、提高效率和增加代码质量,将极大地推动了编程行业的进步和…

[VulnHub靶机渗透] Hackademic: RTB1

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

ABAP: BAPI_MATERIAL_SAVEDATA 创建、修改物料信息毛重不生效

1、BAPI_MATERIAL_SAVEDATA 修改物料信息 参考:https://blog.csdn.net/zhongguomao/article/details/51917696 clientdata-matl_group ls_in-matkl."物料组clientdata-base_uom ls_in-meins."基本计量单位clientdata-extmatlgrp ls_in-extwg."外…

数字藏品平台遭受科技攻击时的防护策略与攻击类型判定

随着区块链技术和数字经济的飞速发展,数字藏品平台逐渐成为炙手可热的投资领域。然而,这也使其成为了黑客攻击的重要目标。本文将深入探讨数字藏品平台可能遭遇的几种主要科技攻击类型,并提出相应的防护措施和判定方法。 一、51%攻击 攻击描…

山海鲸医疗科技:引领智慧医疗新潮流

随着科技的飞速发展,智慧医疗已经成为医疗行业创新的重要方向。在这个背景下,山海鲸智慧医疗解决方案应运而生,以其先进的技术和全面的服务,为医疗行业带来了前所未有的变革。 山海鲸智慧医疗解决方案是一套集成医疗信息化、大数…

Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT

文章目录 Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT摘要方法实验结果 Anatomical-Aware Point-Voxel Network for Couinaud Segmentation in Liver CT 摘要 在 CT 成像中,将肝脏准确分割为解剖片段对于手术规划和病变监测至关…

C++关键字、命名空间、输入输出

一、C C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。 二、C关键字 C关键字有些是C语言中原带的,也有一些是C本身的关键字,对于这些关键字,大家只需在学习过程中去理…

信息系统项目管理师0091:项目经理的能力(6项目管理概论—6.3项目经理的角色—6.3.3项目经理的能力)

点击查看专栏目录 文章目录 6.3.3项目经理的能力1.概述2.项目管理技能3.战略和商务管理技能4.领导力技能5.领导力与管理记忆要点总结6.3.3项目经理的能力 1.概述 项目经理需要重点关注三个方面的关键技能包括项目管理、战略和商务、领导力

图像降噪算法 BM3D 介绍

介绍 BM3D 是 “Block-Matching and 3D Filtering” 的缩写,即三维块匹配滤波,它是一种用于图像去噪的算法。该算法来源于 一篇“Image and video denoising by sparse 3D transform-domain collaborative filtering”的高质量文章,文章的作…

原创度高!性能好!|基于信息共享与黄金搜索的改进星鸦优化算法在50+个函数上进行测试(Matlab)

文章来源于我的个人公众号:KAU的云实验台,主要更新智能优化算法的原理、应用、改进 前面的文章中,KAU介绍了星鸦优化算法(Nutcracker Optimization Algorithm,NOA)[1],NOA算法模拟了星鸦觅食、存储以及缓存搜索、恢复…

SSL证书中DV、OV和EV有什么区别,又该如何选择

SSL(安全套接层)证书作为一种加密工具,确保了网站与其用户之间传输的信息的安全性。而在选择SSL证书时,我们通常会看到三种类型:域名验证(DV)、组织验证(OV)和扩展验证&a…

信息系统项目管理师0090:项目经理的影响力范围(6项目管理概论—6.3项目经理的角色—6.3.2项目经理的影响力范围)

点击查看专栏目录 文章目录 6.3.2项目经理的影响力范围1.概述2.项目3.组织4.行业5.专业学科6.跨领域6.3.2项目经理的影响力范围 1.概述 项目经理在其影响力范围内可担任多种角色,这些角色反映了项目经理的能力,体现了项目经理的价值和作用,项目经理会涉及项日、组织、行业、…