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

【Python学习笔记】第二十五节 Python MySQL

Python 连接到 MySQL 数据库有几种不同的连接方法,而且不是所有的方法都能与不同的操作系统很好地配合.

MySQL connector/Python模块是Oracle支持的官方驱动,用于通过Python连接MySQL。该连接器完全是Python语言,而mysqlclient是用C语言编写的。它也是独立的,意味着它不需要MySQL客户端库或标准库以外的任何Python模块。

注意,MySQL Connector/Python不支持旧的MySQL服务器认证方法,这意味着4.1之前的MySQL版本不能工作。

本文实例的运行环境:

  • Windows 10

  • MySQL 8.0


一、创建数据库连接

1、首先安装mysql-connector-python模块。

python -m pip install mysql-connector

2、连接数据库:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root"  # 数据库密码
)print(mydb)

运行结果

<mysql.connector.connection.MySQLConnection object at 0x000002B399503AC0>

二、创建数据库

1、创建数据库使用 "CREATE DATABASE" 语句,以下创建一个名为 python_demo 的数据库:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root"  # 数据库密码
)print(mydb)myCursor = mydb.cursor()myCursor.execute("CREATE DATABASE python_demo")

2、使用 "SHOW DATABASES" 语句来查看数据库是否存在:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root"  # 数据库密码
)print(mydb)myCursor = mydb.cursor()# myCursor.execute("CREATE DATABASE python_demo")
myCursor.execute("SHOW DATABASES")for x in myCursor:print(x)
  • 我们可以直接连接数据库,如果数据库不存在,会输出错误信息:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)print(mydb)

三、创建数据表

创建数据表使用 "CREATE TABLE" 语句,创建数据表前,需要确保数据库已存在,以下创建一个名为 user 自增主键的数据表:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)# print(mydb)myCursor = mydb.cursor()
myCursor.execute("CREATE TABLE user (id int(11) primary key not null auto_increment,name VARCHAR(64), mobile VARCHAR(32), address VARCHAR(255))")
  • 如果我们的表已经创建,我们需要使用 ALTER TABLE 来给表添加主键:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)# print(mydb)myCursor = mydb.cursor()
myCursor.execute("ALTER TABLE user ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

四、插入数据

  • 插入数据使用 "INSERT INTO" 语句:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)# print(mydb)myCursor = mydb.cursor()sql = "INSERT INTO user (name, mobile,address) VALUES (%s, %s, %s)"
val = ("Lily", "13866669999", "America")
myCursor.execute(sql, val)
mydb.commit()  # 提交print(myCursor.rowcount, "插入成功。")
  • 批量插入

批量插入使用 executemany() 方法,该方法的第二个参数是一个元组列表,包含了我们要插入的数据:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)# print(mydb)myCursor = mydb.cursor()sql = "INSERT INTO user (name, mobile,address) VALUES (%s, %s, %s)"
# val = ("Lily", "13866669999", "America")val = [("LiLei", "13866668888", "China"),("Jim", "13855558888", "America"),("HanMeimei", "13811113333", "China")
]
# myCursor.execute(sql, val)
myCursor.executemany(sql, val)mydb.commit()  # 提交print(myCursor.rowcount, "插入成功。")
3 插入成功。

五、查询数据

1、查询数据使用 SELECT 语句:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()myCursor.execute("SELECT * FROM user")result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
  • 读取指定的字段数据:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT name, mobile, address FROM user")
result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
  • 读取一条数据,可以使用 fetchone() 方法:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT name, mobile, address FROM user")
# result = myCursor.fetchall()  # fetchall() 获取所有记录
result = myCursor.fetchone()  # fetchall() 获取一条记录
print(result)
('Lily', '13866669999', 'America')

2、where 条件语句

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

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()# myCursor.execute("SELECT * FROM user")
myCursor.execute("SELECT * FROM user where address ='America'")
result = myCursor.fetchall()  # fetchall() 获取所有记录
# result = myCursor.fetchone()  # fetchall() 获取一条记录
# print(result)
for x in result:print(x)
(1, 'Lily', '13866669999', 'America')
(3, 'Jim', '13855558888', 'America')
  • 为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义查询的条件:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user where address ='America'")sql = "SELECT * FROM user where address = %s"
param = ("China",)myCursor.execute(sql, param)result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(4, 'HanMeimei', '13811113333', 'China')

3、排序

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

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user  ORDER BY name")
sql = "SELECT * FROM user ORDER BY name"
myCursor.execute(sql)
result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
(4, 'HanMeimei', '13811113333', 'China')
(3, 'Jim', '13855558888', 'America')
(2, 'LiLei', '13866668888', 'China')
(1, 'Lily', '13866669999', 'America')
  • 降序排序实例:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user  ORDER BY name")
sql = "SELECT * FROM user ORDER BY address DESC "
myCursor.execute(sql)
result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(4, 'HanMeimei', '13811113333', 'China')
(1, 'Lily', '13866669999', 'America')
(3, 'Jim', '13855558888', 'America')

4、Limit

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

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
# myCursor.execute("SELECT * FROM user  ORDER BY name")
sql = "SELECT * FROM user LIMIT 2 "myCursor.execute(sql)
result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
(1, 'Lily', '13866669999', 'America')
(2, 'LiLei', '13866668888', 'China')
  • 指定起始位置,使用的关键字是 OFFSET

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
# sql = "SELECT * FROM user LIMIT 2 "
sql = "SELECT * FROM user LIMIT 2 OFFSET 1"myCursor.execute(sql)
result = myCursor.fetchall()  # fetchall() 获取所有记录for x in result:print(x)
(2, 'LiLei', '13866668888', 'China')
(3, 'Jim', '13855558888', 'America')

六、删除记录

删除记录使用 "DELETE FROM" 语句:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()
sql = "DELETE FROM user WHERE name = 'Jim'"myCursor.execute(sql)
mydb.commit()print(myCursor.rowcount, " 条记录删除")
1  条记录删除
  • 为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义删除语句的条件:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()sql = "DELETE FROM user WHERE name = %s"
param = ("HanMeimei",)myCursor.execute(sql, param)
mydb.commit()print(myCursor.rowcount, " 条记录删除")
1  条记录删除

七、更新表数据

数据表更新使用 "UPDATE" 语句:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()sql = "UPDATE user SET name = 'Lucy' WHERE name = 'Lily'"myCursor.execute(sql)
mydb.commit()print(myCursor.rowcount, " 条记录被修改")
1  条记录被修改
  • 为了防止数据库查询发生 SQL 注入的攻击,我们可以使用 %s 占位符来转义更新语句的条件:

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()sql = "UPDATE user SET name = %s WHERE name = %s"
param = ("HanMeimei", "LiLei")myCursor.execute(sql, param)
mydb.commit()print(myCursor.rowcount, " 条记录被修改")
1  条记录被修改

八、删除表

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

# coding=utf-8import mysql.connectormydb = mysql.connector.connect(host="127.0.0.1",  # 数据库主机地址user="root",  # 数据库用户名passwd="root",  # 数据库密码database="python_demo"  # 指定数据库
)myCursor = mydb.cursor()myCursor.execute("SHOW TABLES")for x in myCursor:print(x)sql = "DROP TABLE IF EXISTS user_info"  # 删除数据表 user_info
myCursor.execute(sql)print(" 删除数据表 user_info")myCursor.execute("SHOW TABLES")for x in myCursor:print(x)
('user',)
('user_info',)删除数据表 user_info
('user',)

相关文章:

【Python学习笔记】第二十五节 Python MySQL

Python 连接到 MySQL 数据库有几种不同的连接方法&#xff0c;而且不是所有的方法都能与不同的操作系统很好地配合.MySQL connector/Python模块是Oracle支持的官方驱动&#xff0c;用于通过Python连接MySQL。该连接器完全是Python语言&#xff0c;而mysqlclient是用C语言编写的…...

折叠屏手机自带的屏幕表面层为什么不能自己撕?

计划入手折叠屏手机的小伙伴看过来&#xff0c;因为折叠屏手机外观的特殊形态&#xff0c;在日常使用中与普通直板手机屏幕的养护还是有着很大的不同&#xff0c;比如直板机入手后新机开箱撕膜这个操作&#xff0c;对于折叠屏手机来说&#xff0c;万万不可&#xff01;除此之外…...

20.hadoop系列之Yarn资源调度器

Yarn是一个资源调度平台&#xff0c;负责为运算程序提供服务器运算资源&#xff0c;相当于一个分布式的操作系统&#xff0c;而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1.Yarn基础架构 Yarn主要由ResourceManager、NodeManager、ApplicationMaster和Contai…...

206页16万字城市运行“一网统管”体系建设项目需求报告

本资料来源网络&#xff0c;知识分享&#xff0c;仅供个人学习&#xff0c;请勿商用。完整资料领取见文末&#xff0c;部分资料内容&#xff1a; 第 一 章 应用场景示例 一.1 一卡通人员管理针对企业厂区、办公楼等场所人员出入频繁、安保问题多样化、管理环节复杂等现状&#…...

【JS】数组Array的使用

arr.length 3 通过设置数组长度&#xff0c;实现截取数组&#xff0c;改变原数组 map 循环遍历数组&#xff0c;不改变原数组&#xff0c;返回一个新的数组&#xff08;可用变量接收&#xff09; forEach 循环遍历数组&#xff0c;不改变原数组 join 把数组转化为字符串&…...

2023年,软件测试怎么样?

2022年因为各种不可抗力原因&#xff0c;大厂裁员&#xff0c;失业等等频频受到关注。 不解释&#xff0c;确实存在&#xff0c;各行各业都很难&#xff0c;但是&#xff0c;说软件测试行业不吃香&#xff0c;我还真不认同&#xff08;不是为培训机构说好话&#xff0c;大环境…...

【学习笔记】NOMURA Programming Competition 2020

C - Folia 不难想到自底向上确定树的形态。可能要多尝试一下 一开始想错了好几个地方&#xff0c;服了 假设某一层有XXX个节点&#xff0c;那么上一层可能有⌈X2⌉,⌈X2⌉1,...,X\lceil\frac{X}{2}\rceil,\lceil\frac{X}{2}\rceil1,...,X⌈2X​⌉,⌈2X​⌉1,...,X个节点&…...

iis下常用程序的伪静态规则列表(包括wordpress、thinkphp)

shopex discuz2.0 discuz2.5 discuz3.x 淘宝客 ecshop phpwind参照http://www.west.cn/faq/list.asp?unid797通过主机面板设置即可 wordpress设置&#xff1a; 第一步&#xff1a; 1.新建一个“chineseurl.php”文件&#xff1a;在里面写入以下代码上传到wordpress安装目录。…...

【Python语言基础】——Python Select From

Python语言基础——Python Select From 文章目录 Python语言基础——Python Select From一、Python Select From一、Python Select From 从表中选取 如需从 MySQL 中的表中进行选择,请使用 “SELECT” 语句: 实例 从表 “customers” 中选取所有记录,并显示结果: import m…...

数据增广真有那么神奇吗?

作者&#xff1a;皮皮雷 来源&#xff1a;投稿 编辑&#xff1a;学姐 论文题目 How Effective is Task-Agnostic Data Augmentation for Pretrained Transformers? 论文作者 S. Longpre, Y. Wang, and C. DuBois 论文发表于 2020 EMNLP findings 摘要 任务无关的数据增广…...

常用基础硬件知识 - 判断MOS管导通

目录1. 概述2. 判断MOS管的导通1. 概述 本文主要记录下基础的硬件知识&#xff0c;方便自己查阅。 2. 判断MOS管的导通 在产品硬件设计中&#xff0c;有时需要程序控制一些电源使能。 1.原理图已经标出了G极(gate)—栅极、S极(source)—源极、D极(drain)—漏极。 如果没有标…...

2023金三银四,测试人还能找到好工作吗?

嫌看文章麻烦的朋友点这里&#xff1a;2023最新软件测试行业变革细谈之我们该如何应对&#xff1f; 按照往年的惯例&#xff0c;春节后复工的 3 月、4 月是人员跳槽最频繁的时候&#xff0c;俗称“金三银四”。然而&#xff0c;市场大环境的影响&#xff0c;很多行业感受到了一…...

c++构造函数

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、构造函数1.构造函数的形式2.构造函数的调用时机3.委托构造函数4.复制构造函数二、析构函数本文仅为个人笔记 视频链接&#xff1a;https://www.bilibili.com/vid…...

redis 未授权访问漏洞

redis 未授权访问漏洞 目录 redis 未授权访问漏洞 漏洞描述 漏洞原因&#xff1a; 漏洞危害 漏洞复现&#xff1a; 漏洞复现 写webshell: 写计划任务&#xff1a;centos默认在/var/spool/cron 写ssh公钥实现ssh登录&#xff1a; 漏洞描述&#xff1a; Redis默认情况下…...

如何制作一个自定义的winpe?

winpe制作过程 获取相关资源 https://www.aliyundrive.com/s/MP58JbRsm76 文件存放位置 将压缩包存放在一个全英文目录下了,我这里选择了D:/winpe目录 解压文件 将三个压缩包进行解压到当前目录,如下图所示 创建一个mount目录,并在mount目录下分别创建boot和install目…...

QString转为2进制,8进制,10进制,16进制介绍

首先看段代码&#xff1a; bool ok false;QString ss "11";qDebug()<<"-----"<<ss.toInt(&ok,2)<<ss.toInt(&ok,10)<<ss.toInt(&ok,16)<<ss.toInt(&ok,8);结果&#xff1a; ----- 3 11 17 9 bool ok fal…...

2023-3-2-22:01随笔

好久没怎么更新技术分享博客了。去年从2022年1月3日到2023年1月份一直专注于ADAS的行车横向功能的研发与实车调试&#xff0c;2022年写了几篇项目经验的文章&#xff0c;像LQR算法&#xff08;虽然和同事&#xff08;志同道合&#xff0c;技术追求的民哥&#xff09;写出的工程…...

学习红客技术必备,手把手教你成为“安防第一人”

互联网时代已悄悄来临&#xff0c;作为新时代的人们&#xff0c;我们日常生活、工作、学习方面都需要借助互联网来完成&#xff0c;这样&#xff0c;又产生一种新的问题&#xff0c;那就是网络安全的问题&#xff0c;有时我们拼命加班好不容易完成的东西&#xff0c;在一夜之间…...

Git系列:常见指令辨析

Git系列&#xff1a;常见指令辨析指令辨析工作区、暂存区、版本库傻傻分不清楚&#xff1f;主干和分支的关系是什么&#xff1f;git fetch/merge/pull辨析日志查看时&#xff0c;git log与git reflog的区别是&#xff1f;git diff和status的区别是&#xff1f;相关资料本文小结…...

并发编程实战-构建自定义的同步工具

文章目录1.状态依赖性的管理1.1 示例&#xff1a;将前提条件的失败传递给调用者1.2 示例&#xff1a;通过轮询与休眠来实现简单的阻塞1.3 条件队列2.使用条件队列2.1 条件谓词2.2 过早唤醒2.3 丢失的信号2.4 通知2.5 示例&#xff1a;阀门类2.6 子类的安全问题2.7 入口协议与出…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端&#xff0c;同时完善学生端的构建。本次工作主要包括&#xff1a; 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

SciencePlots——绘制论文中的图片

文章目录 安装一、风格二、1 资源 安装 # 安装最新版 pip install githttps://github.com/garrettj403/SciencePlots.git# 安装稳定版 pip install SciencePlots一、风格 简单好用的深度学习论文绘图专用工具包–Science Plot 二、 1 资源 论文绘图神器来了&#xff1a;一行…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

转转集团旗下首家二手多品类循环仓店“超级转转”开业

6月9日&#xff0c;国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解&#xff0c;“超级…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...