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

网站风格定位ozon电商平台

网站风格定位,ozon电商平台,页面设计包括哪些内容,怎么用flashfxp上传网站Python3 爬虫学习笔记第十章 —— 【数据储存系列 — MySQL】文章目录【10.1】MySQL 基本操作语句数据库操作表操作表的结构表的数据【10.2】Python 连接 MySQL【10.3】创建表【10.4】插入数据【10.5】更新数据【10.6】删除数据【10.7】查询数据【10.8】实战训练 — 爬取CSDN博… Python3 爬虫学习笔记第十章 —— 【数据储存系列 — MySQL】 文章目录【10.1】MySQL 基本操作语句数据库操作表操作表的结构表的数据【10.2】Python 连接 MySQL【10.3】创建表【10.4】插入数据【10.5】更新数据【10.6】删除数据【10.7】查询数据【10.8】实战训练 — 爬取CSDN博客标题和地址保存到 MySQL【10.1】MySQL 基本操作语句 安装完 MySQL 后打开 MySQL x.x Command Line Client - Unicode输入密码即可登录 MySQL也可在 MySQL 安装目录下打开 cmd 使用命令登录数据库 数据库操作 # 连接数据库 mysql -u root -p# 退出数据库 exit# 查看所有的数据库 SHOW DATABASES;# 创建一个数据库 CREATE DATABASE X;# 删除一个数据库 DROP DATABASE IF EXISTS X;# 使用这个数据库 USE X;表操作 # 查看所有的表 SHOW TABLES ;# 创建一个表 CREATE TABLE n(id INT, name VARCHAR(10)); CREATE TABLE m(id INT, name VARCHAR(10), PRIMARY KEY (id), FOREIGN KEY (id) REFERENCES n(id), UNIQUE (name)); CREATE TABLE m(id INT, name VARCHAR(10));# 直接将查询结果导入或复制到新创建的表 CREATE TABLE n SELECT * FROM m;# 新创建的表与一个存在的表的数据结构类似 CREATE TABLE m LIKE n;# 创建一个临时表 # 临时表将在你连接MySQL期间存在。当断开连接时MySQL将自动删除表并释放所用的空间。也可手动删除。 CREATE TEMPORARY TABLE l(id INT, name VARCHAR(10));# 直接将查询结果导入或复制到新创建的临时表 CREATE TEMPORARY TABLE tt SELECT * FROM n;# 删除一个存在表 DROP TABLE IF EXISTS m;# 更改存在表的名称 ALTER TABLE n RENAME m; RENAME TABLE n TO m;# 查看表的结构(以下五条语句效果相同 DESC n; DESCRIBE n; SHOW COLUMNS IN n; SHOW COLUMNS FROM n; EXPLAIN n;# 查看表的创建语句 SHOW CREATE TABLE n;表的结构 # 添加字段 ALTER TABLE n ADD age VARCHAR(2);# 添加字段时设定位置 ALTER TABLE n ADD age VARCHAR(2) FIRST; ALTER TABLE n ADD age VARCHAR(2) AFTER name;# 修改字段在表中的位置 ALTER TABLE n MODIFY age VARCHAR(2) AFTER name;# 删除字段 ALTER TABLE n DROP age;# 更改字段属性和属性 ALTER TABLE n CHANGE age a INT;# 只更改字段属性 ALTER TABLE n MODIFY age VARCHAR(7) ;# 改变表的存储引擎 ALTER TABLE t ENGINE myisam; ALTER TABLE t ENGINE innodb;# 设定自增 初始为1只能一个字段使用该字段为主键的一部分 ALTER TABLE t AUTO_INCREMENT 0;表的数据 # 增加数据 INSERT INTO n VALUES (1, tom, 23), (2, john, 22); INSERT INTO n SELECT * FROM n; # 把数据复制一遍重新插入# 删除数据 DELETE FROM n WHERE id 2;# 更改数据 UPDATE n SET name tom WHERE id 2;# 数据查找 SELECT * FROM n WHERE name LIKE %h%;# 数据排序(反序) SELECT * FROM n ORDER BY name, id DESC ;【10.2】Python 连接 MySQL import pymysqldb pymysql.connect(hostlocalhost, userroot, password000000, port3306) cursor db.cursor() cursor.execute(SELECT VERSION()) data cursor.fetchone() print(Database version:, data) cursor.execute(CREATE DATABASE spiders DEFAULT CHARACTER SET utf8mb4) db.close()通过 PyMySQL 的 connect 方法声明一个 MySQL 连接对象 db当前 MySQL 数据库运行在本地设定 hostlocalhost用户名为 root登录密码为 000000运行在 3306 端口调用 cursor() 方法获得 MySQL 的操作游标该游标用来执行 SQL 语句通过游标操作 execute() 方法写入 SQL 语句第一条 SQL 语句获取 MySQL 的版本信息调用 fetchone() 方法获得第一条数据即 MySQL 的版本号。第二条 SQL 语句执行创建 spiders 数据库的操作编码为 utf8mb4运行该段代码将输出 MySQL 的版本号 Database version: (8.0.17,)【10.3】创建表 import pymysqldb pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age VARCHAR(255) NOT NULL, PRIMARY KEY (id)) cursor.execute(sql) db.close()该段代码实现了在 spiders 数据库里创建了一个名为 students 的表包含 id、name、age 三个字段类型依次为 varchar、varchar、int 【10.4】插入数据 import pymysqlid 17110105 user TRH age 20 db pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql INSERT INTO students(id, name, age) values(%s, %s, %s) try:cursor.execute(sql, (id, user, age))db.commit() except:db.rollback() db.close()commit() 方法的作用是实现数据插入是真正将语句提交到数据库执行的方法使用 try except 语句实现异常处理如果执行失败则调用 rollback() 方法执行数据回滚保证原数据不被破坏使用查询语句可以看到已经插入的数据 进阶操作将需要插入的数据构造成一个字典这样的做法可以让插入方法无需改动只需要传入一个动态变化的字典就行了改写原来的代码如下 import pymysqldata {id: 17110105,name: TRH,age: 20 } table students keys , .join(data.keys()) values , .join([%s]*len(data)) db pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql INSERT INTO {table}({keys}) VALUES ({values}).format(tabletable, keyskeys, valuesvalues) try:cursor.execute(sql, tuple(data.values()))print(数据插入成功)db.commit() except:print(数据插入失败)db.rollback() db.close()传入的数是字典将其定义为 data 变量表名定义成变量 table构造插入的字段 id、name 和 age。, .join(data.keys()) 的结果就是 id, name, age接着需要构造多个 %s 当作占位符有三个字段就需要构造 %s, %s, %s。首先定义长度为 1 的数组 [%s]然后用乘法将其扩充为 [%s, %s, %s]再调用 join() 方法最终变成 %s, %s, %s。再利用字符串的 format() 方法将表名、字段名和占位符构造出来。最终的 SQL 语句就被动态构造成了如下语句 INSERT INTO students(id, name, age) VALUES (%s, %s, %s)【10.5】更新数据 import pymysqldata {id: 17110105,name: TRH,age: 21 } table students keys , .join(data.keys()) values , .join([%s]*len(data)) db pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE.format(tabletable, keyskeys, valuesvalues) update ,.join([{key} % s.format(keykey) for key in data]) sql update try:if cursor.execute(sql, tuple(data.values())*2):print(数据插入成功)db.commit() except:print(数据插入失败)db.rollback() db.close()ON DUPLICATE KEY UPDATE 表示如果主键已经存在就执行更新操作最终被构造成如下语句 INSERT INTO students(id, name, age) VALUES (% s, % s, % s) ON DUPLICATE KEY UPDATE id % s, name % s, age % s【10.6】删除数据 import pymysqltable students condition age 20 db pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql DELETE FROM {table} WHERE {condition}.format(tabletable, conditioncondition) try:cursor.execute(sql)print(数据删除成功)db.commit() except:print(数据删除失败)db.rollback() db.close()删除操作直接使用 DELETE 语句指定要删除的目标表名和删除条件即可 【10.7】查询数据 import pymysqltable students db pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbspiders) cursor db.cursor() sql SELECT * FROM students WHERE age 20 try:cursor.execute(sql)print(Count:, cursor.rowcount)one cursor.fetchone()print(One:, one)results cursor.fetchall()print(Results:, results)print(Results Type:, type(results))for row in results:print(row) except:print(查询失败)sql SELECT * FROM students WHERE age 20构造一条 SQL 语句将年龄 大于等于20 岁的学生查询出来 cursor.rowcount调用 cursor 的 rowcount 属性获取查询结果的条数 cursor.fetchone()调用 cursor 的 fetchone() 方法获取结果的第一条数据返回结果是元组形式元组的元素顺序跟字段一一对应即第一个元素就是第一个字段 id第二个元素就是第二个字段 name以此类推 cursor.fetchall()调用 cursor 的 fetchall() 方法得到结果的所有数据它是二重元组每个元素都是一条记录本例中显示的是 3 条数据而不是 4 条这是因为它的内部实现有一个偏移指针用来指向查询结果最开始偏移指针指向第一条数据取一次之后指针偏移到下一条数据这样再取的话就会取到下一条数据了。我们最初调用了一次 fetchone 方法这样结果的偏移指针就指向下一条数据fetchall 方法返回的是偏移指针指向的数据一直到结束的所有数据所以该方法获取的结果就只剩 3 个了 【10.8】实战训练 — 爬取CSDN博客标题和地址保存到 MySQL 利用 requests 库构建请求BeautifulSoup 解析库解析网页获取自己博客文章的标题和地址将其储存到本地 MySQL 数据库中事先已经创建好了一个 blog 数据库并创建了一个名为 article 的数据表数据表包含 id、title、url 三个字段其中 id 的 AUTO_INCREMENT 属性可以使 id 自己增加PRIMARY KEY 关键字用于将 id 定义为主键在解析网页时使用了 replace() 方法将表示原创文章的“原”字替换成了空格并使用了 strip() 方法将字符串中多余的空格去掉 创建 article 数据表 import pymysqldb pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbblog) cursor db.cursor() sql CREATE TABLE IF NOT EXISTS article (id INT NOT NULL AUTO_INCREMENT, title VARCHAR(255) NOT NULL, url VARCHAR(255) NOT NULL, PRIMARY KEY (id)) cursor.execute(sql) db.close()获取文章标题和对应的 URL 并将其储存到 MySQL 中 import requests import pymysql from bs4 import BeautifulSoupdb pymysql.connect(hostlocalhost, userroot, password000000, port3306, dbblog) cursor db.cursor()headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36, } url https://blog.csdn.net/qq_36759224request requests.get(url, headersheaders) soup BeautifulSoup(request.text, lxml) title_list soup.find_all(h4) for list in title_list:s list.a.text.strip()title s.replace(原, )url list.a[href].strip()# print(title url)cursor.execute(INSERT INTO article (title, url) VALUES (%s, %s), (title, url)) db.commit() print(数据写入完毕) db.close()在命令行中使用 SELECT * FROM article; 命令可以查看到数据已经成功获取并储存到了数据库中
http://www.pierceye.com/news/366182/

相关文章:

  • 初中生如何做网站潍坊网站开发
  • 如何修改用织梦做的网站的模板价格对比网站开发
  • 单位建设网站的作用意义家在深圳坂田业主论坛
  • 网站什么时候备案好宜昌网站建设
  • 那个网站可以查询美做空基金竹中建设官方网站
  • 做直播网站找哪个网站网站平台推广方法
  • 查工程中标信息哪个网站成都网站建设 致尚
  • 做硅胶的网站wordpress googleapis
  • 做网站 简单外包常见的管理信息系统有哪些
  • 做网站一万静海网站开发
  • 视频模板在线制作网站空客德国公司
  • 如何编程制作自己的网站献县做网站价格
  • 成都网站品牌设计设计教育培训
  • 无代码做网站wordpress添加模板后台显示
  • 中山做网站费用国内做网站好的公司
  • 搬瓦工putty做网站建设网站证书
  • 江西网站开发哪家好平面设计主要是做什么的
  • 邱启良 深圳网站建设网站开发 加密存储 解密 二次计算
  • 肥城网站设计公司商务网站要怎么做
  • 做网站的毕设用什么软件统计wordpress
  • 网站备案 游戏易企推
  • 男人做想看的免费网站网页设计有哪些岗位
  • 南江县规划和建设局网站怎样做淘宝客导购网站
  • 浦江县住房和城乡建设局网站校园网站开发方案
  • 微做网站网站开发源代码
  • 福建省住房城乡建设部网站fusionaccess免费服务器
  • 山东省春季高考网站建设试题莱芜在线论坛莱芜话题秦立奉
  • 太原城市建设招标网站电子商务是干什么的具体
  • 网站 营销网站的备案的要多少钱
  • 网站模板 源码wordpress手机端装换