ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

MySQL基础语法解析及其在Python爬虫中的应用

MySQL基础语法解析及其在Python爬虫中的应用 一.简介MySQL 是一个开源、免费且成熟稳定的关系型数据库管理系统RDBMS被广泛应用于各类 Web 应用和爬虫数据存储中。 所谓“关系型”指的是它将数据以二维表格的形式组织存储类似 Excel 工作表表与表之间可以通过共有的字段如用户ID建立关联配合结构化查询语言SQL能够对数据进行非常严谨、灵活的增删改查操作并严格保证数据的一致性和完整性支持事务 ACID。在爬虫开发中MySQL 常作为最终的数据归宿地通过编写 Pipeline 组件将 Scrapy 抓取的清洗后数据持久化存储到本地或云端的 MySQL 服务中便于后续的查询与分析。二.可视化结构由于MySQL本身是在cmd命令行中操作的因此需要借助可视化工具获得更好更直观的使用体验常用第三方可视化工具有Navicat、DBeaver等等这里使用DBeaver进行演示。右侧端口号为3306的localhost就是我们电脑上的MySQL服务程序MySQL数据库默认端口号是3306下面数据库一栏中放着默认数据库和我们创建的所有数据库在使用中我们应避免使用默认数据库。三.SQL语言由于数据库管理系统功能非常多不仅存储数据还包含数据的管理、表的管理、库的管理、账户管理、权限管理等等所以操作数据库的SQL语言也基于功能被划分为四大类。SQL语句大小写不敏感,命令结束必须带分号1.数据定义DDLData Definition Language库与表的操作a.库的相关操作输入命令show databases;查看数据库。输入命令use 数据库名称;使用和切换数据库后续想要更换数据库进行操作也输入此命令。输入命令select database();查看当前正在使用的数据库鼠标选中单条命令可单独执行此命令。输入命令create database [if not exists] 数据库名称 [charset 编码名称];创建数据库中括号表示可写可不写写的话不用写括号直接写命令如果加第一个括号中的内容表示如果存在同名数据库就不进行任操作反之创建数据库。第二个括号中内容作用是设置编码方式MySQL默认utf-8编码这里不用加横杠最好显式设置一下。注左侧不显示数据库就右击刷新一下。输入命令drop database 数据库名称;删除指定数据库。b.表的相关操作在我们创建表时要为列指定一个列类型列类型有以下几种可按需选择输入命令create table [if not exists] 表名称( 列名称 列类型, 列名称 列类型, ......);创建表注意图中格式且最后一行没逗号如果加括号中的内容表示如果存在同名表就不进行任操作反之创建表。输入命令rename table 旧表名 to 新表名;来修改表名。输入命令alter table 表名 add 列名 列类型;单独添加一列不能添加数据。输入命令alter table 表名 change 旧列名 新列名 新列类型;更改列名和列类型如需只更改类型写相同列名即可。输入命令alter table 表名 drop 列名;单独删除一列。输入命令show tables;查看表注在此之前应先用use选择使用哪个数据库。输入命令desc 表名;查看表结构每一列的类型等信息库里有多张表难免会忘记某张表的设置信息这时就需要靠此命令查询。输入命令drop table 表名;删除指定数据表。2.数据操纵DMLData Manipulation Language增删改数据a.数据插入字符串最好用单引号输入命令insert into 表名(列名) values(值1)[, (值2), (值3)......];进行单列插入插入一条或多条数据。输入命令insert into 表名(列1, 列2, 列3, ......) values(列1对应值, 列2对应值, 列3对应值, ......), [(列1对应值, 列2对应值, 列3对应值, ......), ......];进行多列插入插入一条或多条数据。注多列插入可以省略列名但值的位置和类型必须一一对应b.数据删除条件判断的常见操作符输入命令delete from 表名称 [where 条件判断];从表中删除数据。如果不加中括号中的条件判断句就是清空整张表中的数据但不删除表格。c.数据更新输入命令update 表名 set 列 值 [where 条件判断];进行数据更新操作。不写条件判断就是修改整张表中指定列的所有值。3.数据查询DQLData Query Language查询和计算数据a.基础查询输入命令select 字段列表 | * from 表;进行数据查询“ | ”表示前后可选。“ * ”是通配符代表所有。b.分组聚合简介如果要统计一个班级中男生和女生的人数就需要先按性别分组再i统计每组人数这就是分组聚合。常用聚合函数;输入命令select 字段 | 聚合函数 from 表 [where 条件] group by 列;进行分组聚合操作group by后写了谁字段中才能出现谁但聚合函数无限制可以有一个或多个。由于这个结果并不够直观我们可以加上gender字段增加视觉效果如果字段和聚合函数同时存在中间要有逗号隔开否则报错聚合函数可以有一个或多个中间同样要逗号隔开这里count(gender)表示满足条件且有性别的数据有几条。c.排序分页输入命令select 列 | 聚合函数 | * from 表 where ... group by ... order by ... [asc | desc];指定某个列进行排序其中asc即ascending代表升序desc即descending代表降序。desc降序排列。输入命令select 列 | 聚合函数 | * from 表 where ... group by ... order by ... [asc | desc] limit n[ , m];进行限制排序和分页如果limit后只有n则返回符合前置条件且排名前n条的数据。limit后n和m都有则显示符合前置条件的数据从第n1条开始到第m条。四.Python操作MySQL的基本方法1.连接MySQL要用Python操作MySQL储存我们爬取的数据必须要用到一个名为pymysql的第三方库按winR输入cmd打开终端输入命令pip install pymysql进行安装然后进行后续操作。安装完成后我们就可以用python与MySQL数据库进行基础的连接注意当前项目文件名不能出现pymysql否则会报错2.执行SQL语句在Python代码中写SQL语句时可以末尾可以不加分号但在可视化界面或MySQL环境中必须加分号a.执行非查询性质的SQL语句在Python中我们需要游标对象来执行SQL语句因此我们要先用连接对象来实例化游标对象并用连接对象选择目标数据库然后就可以在游标对象.execute( )中写SQL语句了且这里SQL语句一定要加引号。b.执行查询性质的SQL语句由于查询性质的SQL语句我们需要接收查询的结果所以写法略有不同。需要先用游标对象获取查询结果再用一个变量接收这个结果该结果是一个双层嵌套的元组。c.执行数据插入通过Python往MySQL数据库插入数据时需通过commit确认插入否则运行后数据库内数据也不会发生改变如不想手动进行插入可在连接对象中设置自动插入。输入连接对象.commit()确认数据插入。在连接对象conn中设置autocommit True实现自动提交后面所有的插入语句都无需手动确认。
返回列表