当前位置: 首页 > news >正文

【Python学习笔记】37.Python3 MySQL - mysql-connector 驱动(2)

前言

本章继续介绍MySQL - mysql-connector 驱动。

where 条件语句

如果我们要读取指定条件的数据,可以使用 where 语句:

demo_mysql_test.py
读取 name 字段为 CSDN 的记录:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "SELECT * FROM sites WHERE name ='CSDN'"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(1, 'CSDN', 'https://www.CSDN.com')

也可以使用通配符 %:

demo_mysql_test.py

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "SELECT * FROM sites WHERE url LIKE '%oo%'"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(1, 'CSDN', 'https://www.CSDN.com')
(2, 'Google', 'https://www.google.com')

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:

demo_mysql_test.py

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "SELECT * FROM sites WHERE name = %s"
na = ("CSDN", )mycursor.execute(sql, na)myresult = mycursor.fetchall()for x in myresult:print(x)

排序

查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,关键字为 ASC,如果要设置降序排序,可以设置关键字 DESC

demo_mysql_test.py
按 name 字段字母的升序排序:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "SELECT * FROM sites ORDER BY name"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(3, 'Github', 'https://www.github.com')
(2, 'Google', 'https://www.google.com')
(1, 'CSDN', 'https://www.CSDN.com')
(5, 'stackoverflow', 'https://www.stackoverflow.com/')
(4, 'Taobao', 'https://www.taobao.com')
(6, 'Zhihu', 'https://www.zhihu.com')

降序排序实例:

demo_mysql_test.py
按 name 字段字母的降序排序:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "SELECT * FROM sites ORDER BY name DESC"mycursor.execute(sql)myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(6, 'Zhihu', 'https://www.zhihu.com')
(4, 'Taobao', 'https://www.taobao.com')
(5, 'stackoverflow', 'https://www.stackoverflow.com/')
(1, 'CSDN', 'https://www.CSDN.com')
(2, 'Google', 'https://www.google.com')
(3, 'Github', 'https://www.github.com')

Limit

如果我们要设置查询的数据量,可以通过 “LIMIT” 语句来指定

demo_mysql_test.py
读取前 3 条记录:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()mycursor.execute("SELECT * FROM sites LIMIT 3")myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(1, 'CSDN', 'https://www.CSDN.com')
(2, 'Google', 'https://www.google.com')
(3, 'Github', 'https://www.github.com')

也可以指定起始位置,使用的关键字是 OFFSET

demo_mysql_test.py
从第二条开始读取前 3 条记录:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()mycursor.execute("SELECT * FROM sites LIMIT 3 OFFSET 1")  # 0 为 第一条,1 为第二条,以此类推myresult = mycursor.fetchall()for x in myresult:print(x)

执行代码,输出结果为:

(2, 'Google', 'https://www.google.com')
(3, 'Github', 'https://www.github.com')
(4, 'Taobao', 'https://www.taobao.com')

删除记录

删除记录使用 “DELETE FROM” 语句:

demo_mysql_test.py
删除 name 为 stackoverflow 的记录:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "DELETE FROM sites WHERE name = 'stackoverflow'"mycursor.execute(sql)mydb.commit()print(mycursor.rowcount, " 条记录删除")

执行代码,输出结果为:

1  条记录删除

注意:要慎重使用删除语句,删除语句要确保指定了 WHERE 条件语句,否则会导致整表数据被删除。

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:

demo_mysql_test.py

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "DELETE FROM sites WHERE name = %s"
na = ("stackoverflow", )mycursor.execute(sql, na)mydb.commit()print(mycursor.rowcount, " 条记录删除")

执行代码,输出结果为:

1  条记录删除

更新表数据

数据表更新使用 “UPDATE” 语句:

demo_mysql_test.py
将 name 为 Zhihu 的字段数据改为 ZH:

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "UPDATE sites SET name = 'ZH' WHERE name = 'Zhihu'"mycursor.execute(sql)mydb.commit()print(mycursor.rowcount, " 条记录被修改")

执行代码,输出结果为:

1  条记录被修改

注意:UPDATE 语句要确保指定了 WHERE 条件语句,否则会导致整表数据被更新。

为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义更新语句的条件:

demo_mysql_test.py

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "UPDATE sites SET name = %s WHERE name = %s"
val = ("Zhihu", "ZH")mycursor.execute(sql, val)mydb.commit()print(mycursor.rowcount, " 条记录被修改")

执行代码,输出结果为:

1  条记录被修改

删除表

删除表使用 “DROP TABLE” 语句, IF EXISTS 关键字是用于判断表是否存在,只有在存在的情况才删除:

demo_mysql_test.py

import mysql.connectormydb = mysql.connector.connect(host="localhost",user="root",passwd="123456",database="CSDN_db"
)
mycursor = mydb.cursor()sql = "DROP TABLE IF EXISTS sites"  # 删除数据表 sitesmycursor.execute(sql)

相关文章:

【Python学习笔记】37.Python3 MySQL - mysql-connector 驱动(2)

前言 本章继续介绍MySQL - mysql-connector 驱动。 where 条件语句 如果我们要读取指定条件的数据,可以使用 where 语句: demo_mysql_test.py 读取 name 字段为 CSDN 的记录: import mysql.connectormydb mysql.connector.connect(host…...

【高级Java】高级Java实验

一、反射与动态代理1、(4分)请通过反射技术,为附件中的Person.class生成相应的.java代码,java代码中的方法的方法体为空,即方法内部代码不用生成。请注意生成的java代码的格式。2、(3分)请为第1…...

SYN480R 解码

目录1.空载情况下2.当有按键被按下3.数据帧分析4.同步码5.数据码6.对24位数据帧分析1.空载情况下 在空载情况下,syn480r 输出引脚,输出的是杂乱无序的波形 2.当有按键被按下 按下按键,会连续输出相同的脉冲波形,放大分析 3.数据…...

ASP .NET(基于.NET 6.0)源码解读

这几天一直在琢磨在我现有技术认知基础上,未来如何做技术提升。 日思夜想,我整理出了我自己的一套学习规划方案,并希望在实施过程中能够不断调整学习方案与方式,以接近自我提升的效率最大化。 从以下几个大的方面来得到提升&…...

阿里工作7年,一个30岁女软件测试工程师的心路历程

简单的先说一下,坐标杭州,14届本科毕业,算上年前在阿里巴巴的面试,一共有面试了有6家公司(因为不想请假,因此只是每个晚上去其他公司面试,所以面试的公司比较少) 其中成功的有4家&am…...

学生党必备的 Keychron 无线机械键盘

学生党必备的 Keychron 无线机械键盘 由于专业需要,之间的键盘使用起来不太舒服,于是准备重新买一个适合工作学习的键盘,于是通过朋友介绍了解到了keychron k3pro,当时也看到网上一些资料说道这款键盘比较到位,今天就来带大家了解…...

FPGA MAX 10 10M50系列10M50DAF484C8G/10M50DAF484C7G/10M50DCF484C7G规格

介绍MAX 10器件是单芯片、非易失性低成本可编程逻辑器件(pld),用于集成最优的系统组件集。MAX 10设备的亮点包括:内部存储双配置闪存用户闪存即时支持集成模数转换器(adc)支持Nios II单芯片软核处理器MAX 10设备是系统管理、I/O扩展、通信控制平面、工业、汽车和消费…...

【codequ】Java学习路线整理(韩顺平)

文章目录Java学习路线一、Java基础1.建立编程思想Java概述变量运算符控制结构数据、排序和查找面向对象编程(基础)面向对象编程(中级)项目&学以致用2.提升编程能力3.分析需求,代码实现能力Java8新特性二、Java高级…...

服务器容器配置日志(Linux+x86_64+Ubuntu18.04+CUDA11.0+python3.7)

一、创建并进入容器 (平台使用教学详细,这部分略写) 登上服务器后,打开终端输入如下进入自己建的容器 ssh -p XXXXX root10.XXX.XXX.XXX //按自己的宿主机端口写二、安装Conda(miniconda3) &#xff08…...

2023年美赛赛题思路分析

2023年的赛题A-F题的整体难度不算太难,难度在于数据的收集上。整体难度上来看,难度上F题难度最小,建议直接上手。本次先给大家分享一些数据网站,在对各题做简单的思路分析。1、美国国家海洋和大气管理局Homepage | National Ocean…...

[C++]服务器与客户端建立连接与检测断开的demo

该程序在IP127.0.0.1以及端口5000环境下测试 有一段时间没有在Windows下用C进行网络编程了,这段日子都在做QT的网络编程和OpenCV的图像识别。 今天重新写个Windows下C的,基于TCP的双端连接建立与断开检测的demo,巩固下自己Windows下的网络编程…...

包教包会vue3+ts状态管理工具pinia

一、Pinia介绍 定义:pinia是和vuex一样的状态管理工具 语法:和 Vue3 一样,它实现状态管理有两种语法:选项式API 和 组合式API 支持:vue2、typeScript、devtools 二、使用步骤 1.安装 pnpm add pinia yarn add pin…...

Generated columns cannot be used in COPY

错误如下DBD::Pg::db do failed: ERROR: column "transtype" is a generated columnsec., avg: 2520 recs/sec), REPORTSINTERMEDIATETABLE in progress.DETAIL: Generated columns cannot be used in COPY. at /usr/local/share/perl5/Ora2Pg.pm line 15125.FATAL: …...

Amazon S3简介

前言: 这段时间来到了某大数据平台,做平台技术底座封装和一些架构等等,有结构化数据也有非结构数据,涉及到很多技术,自己也私下花时间去研究了很多,有很多纯技术类的还是需要梳理并记录,巩固以及…...

MySQL索引类型——有五种

文章目录前言一、MySQL中的索引类型有以下几种1.1 普通索引1.1.1 直接创建索引1.1.2 修改结构的方式添加索引1.1.3 创建表的时候同时创建索引1.1.4 删除索引1.2 唯一索引1.2.1 创建唯一索引1.2.2 修改表结构1.2.3 创建表的时候直接指定1.3 主键索引1.4 组合索引1.5 全文索引1.5…...

CloudCompare 二次开发(5)——非插件中的PCL环境配置(均匀采样为例)

目录 一、概述二、CMakeLists.txt三、源码编译四、代码示例五、结果展示一、概述 在进行CloudCompare二次开发的时候,可以直接在CloudCompare的核心功能中添加自己的算法,比插件式的算法集成要方便得多。因此,这里主要记录CloudCompare非插件式二次开发配置PCL,并给出具体开…...

停车辅助系统的技术和变化

各种各样的停车辅助系统已经存在了很长时间,但用户经常在不知道什么技术以及它是如何工作的情况下使用它们。 今天我们依次来谈谈停车辅助系统是什么,怎么发展以及如何应用的。 ​ 1.手信号 您可能会想,“为什么手信号是停车辅助系统&#x…...

扬帆优配|日均客运量恢复,民航业加速复苏,外资买入2股超亿元

春运民航客运量康复至疫情前七成。 2月16日,民航局举行2月例行新闻发布会。会上介绍,自1月7日至2月15日,春运40天,民航运送旅客5523万人次,日均客运量138万人次,同比去年春运添加39%,康复至2019…...

【PyTorch】教程:torch.nn.ModuleDict

Containers-ModuleList CLASS torch.nn.ModuleDict(modulesNone) 将所有的子模块放到一个字典中。 ModuleDict 可以像常规 Python 字典一样进行索引,但它包含的模块已正确注册,所有 Module 方法都可以看到。 ModuleDict 是一个有序字典。 Parameters …...

Git、小乌龟、Gitee的概述与安装应用超详细(组长与组员多人开发版本)

目录 一、概述 1.什么是Git? 2.Git历史来源 3.Git的优点? 4.什么是版本控制? 5.版本控制工具种类? 6.Git工作机制 7.Git、小乌龟、Gitee、凭据管理器的简单介绍 二、Git下载安装 下载Git 安装Git 安装完成后查看版本 三、下载小…...

【信息科学与工程学】【通信工程】第五十九篇 面向SDN城域网网络的算法工程02

条目:SDN-Metro-0065 (IPoE入L3VPN业务) 字段 内容 1. 编号​ SDN-Metro-0065 2. 类别​ 业务领域 / 接入与VPN 3. 领域​ 基于动态策略的IPoE用户接入L3VPN业务 4. 模型配方​ IPoE(IP over Ethernet)用户通过以太网接入,并直接进入运营商的L3VPN网络,访问企业内…...

使用Nodejs和Taotoken为前端应用构建AI聊天后端

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Node.js和Taotoken为前端应用构建AI聊天后端 基础教程类,指导前端或全栈开发者使用Node.js环境接入Taotoken&#…...

2025届最火的六大AI辅助写作网站解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 这些年,“论文一键生成”类工具可多了,吸引着有写作压力的学生&#…...

普遍认为赠送福利越多客户留存越高,编程统计福利投入,客户留存数据过度福利,会造成客户贪婪流失率上升。

“福利投入强度与客户留存的非线性关系分析” 为主题。一、实际应用场景描述(Business Context)在 SaaS、电商、会员制平台、在线教育等商业场景中,赠送福利(优惠券、积分、试用权益、赠品等)被广泛用于:- …...

告别CubeMX代码洁癖:教你如何把main()函数挪到自己的.c文件里(STM32F4实战)

重构STM32工程的艺术:将main()迁移到自定义文件的实战指南 每次打开CubeMX生成的工程,看到那个被各种初始化代码塞满的main.c文件,你是否也感到一丝不适?作为一名有追求的嵌入式开发者,我们渴望对项目结构拥有绝对掌控…...

【HAL库实战】STM32F407通过I2C驱动MPU6050全解析

1. 硬件连接与CubeMX配置 第一次用STM32F407驱动MPU6050时,我对着开发板愣了半天——为啥官方例程用的PB6/PB7引脚,我的模块却要接PB8/PB9?后来才发现这是I2C引脚重映射的典型场景。先看硬件接线要点: 物理连接:MPU6…...

从零搭建AI增强型第二大脑:NotebookLM+Obsidian+Dataview三体联动,7天知识处理效率提升3.8倍

更多请点击: https://intelliparadigm.com 第一章:NotebookLM与Obsidian整合的底层逻辑与价值定位 NotebookLM 与 Obsidian 的整合并非简单插件叠加,而是基于“语义增强型知识工作流”的范式迁移。其底层逻辑根植于双引擎协同:No…...

2026发文避坑指南:告别大众型AI,用对垂直编辑器让过审更轻松

在2026年的学术大环境下,核心期刊的收录门槛持续走高,许多科研工作者正面临着一种隐性焦虑:明明实验数据扎实、研究背景深厚,投递出去的稿件却屡屡被退。其实,很多时候被拒的根本原因并非学术价值不足,而是…...

Codex:不只是程序员的代码助手,更是办公人士的高效伙伴

Codex:不只是程序员的代码助手,更是办公人士的高效伙伴 面向团队协作、文档处理、数据分析和日常执行的智能工作台 当人们谈到 Codex,第一反应往往是“写代码”。这当然是它的强项,但如果只把 Codex 看成程序员的专属工具&#…...

AMBA CHI协议Issue F更新解析与SoC设计优化

1. AMBA CHI Issue F协议更新深度解析AMBA CHI(Coherent Hub Interface)作为Arm体系结构中的关键一致性协议,在多核处理器设计中扮演着至关重要的角色。最新发布的Issue F版本对协议规范进行了多项重要修正,这些变更直接影响SoC设…...