#14 Python爬虫的进阶之路---数据库介绍

SQL语法

两个部分:数据定义语言(DDL)和数据操作语言(DML)
前者用于创建或删除表格,定义索引,规定链接,施加约束
后者用于增删改查
SQL语法对大小写不敏感
primary key
在这里插入图片描述
在这里插入图片描述
关键词DISTINCT 加在 SELECT之后,用于合并重复值
有条件查找用到where子句
在这里插入图片描述
还可以使用andor以及括号进行合并查找
排序则需要用到ORDER BY语句,默认按照ASC升序,可以改为DESC降序
在这里插入图片描述
update table_name set col_name=new_val where col_2 = val
delete from table_name where col=val 删除某个记录
insert into table_name(col1,col2...) values(val1,val2,...)

SQLite

.schema [table]显示表结构

.tables 显示所有表和视图

.indices 获取指定表的索引列表

.output [filename]
.dump
.output stdout
导出数据库到SQL文件

.read [filename]从SQL文件导入数据库
在这里插入图片描述

SQLite事务

begin transaction:启动事务处理
commit:提交更改 也可使用end transaction
rollback:回滚所做更改
这些命令只能与DML使用,对于创建和删除表数据库自动commit无法回滚

python操作SQLite

使用sqlite3模块
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
注:对于查询语句不需要con.commit,插入或修改中文数据时在中文字符串前加上‘u’

MySQL

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建库与表

create database database_name [character set gbk]编码设为gbk

使用数据库 use database_name

若担心语句过长,可以保存为sql文件,并使用以下方式执行sql
在登录MySQL时输入: mysql -D database_name -u user_name -p < sql_file_location
或登录之后,输入:source sql_file_location 或者 \. sql_file_location

增删改查

insert into
update set where
select from
delete from where

对表结构操作

在这里插入图片描述
删除drop

常用命令
  1. 连接MySQL
    • 连接本机 mysql -u name -p
    • 远程主机 mysql -h ip_addr -u name -p password
  2. 修改密码
    mysqladmin -u name -p old_p password new_p
  3. 增加新用户
    grant 权限1,权限2.... on database_name.table_name to user_name@user_ip identified by 'new_password'
  4. 显示数据库
    show database
  5. 备份数据库或表
    mysqldump -h 主机名 -P 端口 -u user_name -p password -database 数据库名[表名]>文件.sql
python操作mysql
  1. Python2中使用模块MySQLdb;在Python3中使用模块pymysql,基本功能相同
  2. 打开数据库con=pymysql.connect(host='localhost',user='root',passwd='',db='',port=3306,charset='utf-8')
  3. 数据库连接对象con
    cursor()创建一个游标对象
    commit()事务提交
    rollback()事务回滚
    close()关闭一个数据库连接
  4. 游标对象使用与SQLite相同
  5. 建表使用cur.execute
  6. 插入数据与sqlite一样不能使用一个字符串作为执行语句,容易导致sql注入,应该使用%s占位符,具体方式与sqlite相同,同样需要使用commit()提交后生效
  7. 查询修改与删除和sqlite相同

MongoDB

基于分布式文件存储的数据库,非关系型数据库但很像关系型数据库,更适合爬虫。

MongoDB的安装

参见14.1

MongoDB基础

属于NoSQL数据库,与SQL概念对比
在这里插入图片描述
**文档:**基本数据单元(BSON)文档有唯一标识_id,数据库自动生成,以key/value方式组织文档;文档键值对有序,顺序不同文档不同;值可以使用字符串,整型,列表,文档等类型;键名不能有\0(空字符),其用来标识键尾,.$被保留,不能以_开头;区分大小写及类型
**集合:**没有固定结构,可以插入不同格式和类型的数据;集合名不能为空字串;不含有\0标识集合名结尾;不能以system.开头;不能含有保留字符
**数据库:**一个MongoDB实例中有多个数据库,默认数据库为“db”

常见数据库类型

在这里插入图片描述

创建删除数据库与集合文档增删改查

use database_name使用指定数据库,如果没有则会创建,但在使用show dbs时,如果数据库没有数据,就显示不出来。
db.dropDatabase()删除当前数据库
文档的数据结构和JSON基本相同,BSON是JSON的一种二进制存储格式。
db.collection_name.insert()db.collection_name.save()插入一个字典(文件),自动创建不存在的集合
db.collection_name.find()进行查询,后面加上.pretty()使得输出更易读
在这里插入图片描述
在这里插入图片描述
db.collection_name.update(query, update,{upsert:bool,multi:bool,writeConcern:document})db.collection_name.save(document,{writeConcern:document})来更新,在这里插入图片描述
在这里插入图片描述
save()更新方法需要使用分配的_id
在这里插入图片描述
db.collection_name.remove(query,{justOne:bool, writeConcern:document})进行删除

python操作MongoDB

使用pymongo模块
建立连接: client = pymongo.MongoClient()或MongoClient(‘localhost’,‘27017’)或MongoClient('mongodb://localhost:27017/)
获取数据库: 以属性方式获取数据库,如client.test或client[‘paper’];获取文档的方式与之一致
插入文档: collection_name.insert(document) 可多个值以列表的形式插入,返回_id值,可自己赋予,也可自动创建
查询文档: collection_name.find_one(query) 匹配query查询或使用find()获取多个文档,返回一个Cursor实例,以迭代方式读取,find().count()则查询文件数量
修改和删除分别使用update和remove

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值