3.2-python爬虫之数据库存储

系列文章目录

python爬虫目录


文章目录

  • 系列文章目录
  • 前言
  • 一、MySQL数据库
    • 1、安装MySQL
    • 2、navicat 或 MySQL Workbench
    • 3、安装驱动程序
    • 4、数据库连接
    • 5、插入数据
    • 6、查找数据
    • 7、删除数据
    • 8、更新数据
  • 二、MongoDB数据库
    • 1、在windows 安装 mongodb
    • 2、mongodb 三元素
    • 3、mongodb 操纵命令
    • 4、python 操作 mongodb


前言

摘录自B站对应课程笔记
不愧是清华大佬!把Python网络爬虫讲得如此简单明了!从入门到精通保姆级教程(建议收藏)

以下是本篇文章正文内容,下面案例可供参考


一、MySQL数据库

1、安装MySQL

1、在官网:https://dev.mysql.com/downloads/windows/installer/5.7.html
2、如果提示没有.NET Framework框架。那么就在提示框中找到下载链接,下载一个就可以了。
3、如果提示没有Microsoft Virtual C++ x64(x86),那么百度或者谷歌这个软件安装即可。

2、navicat 或 MySQL Workbench

navicat是一个操作mysql数据库非常方便的软件。使用他操作数据库,就跟使用excel操作数据是一样的。不过企业使用需要收费

MySQL Workbench MySQL Workbench是一款专为MySQL设计的ER/数据库建模工具。它是著名的数据库设计工具DBDesigner4的继任者。你可以用MySQL Workbench设计和创建新的数据库图示,建立数据库文档,以及进行复杂的MySQL 迁移。MySQL Workbench是下一代的可视化数据库设计、管理的工具,它同时有开源和商业化的两个版本。该软件支持Windows和Linux系统

3、安装驱动程序

Python要想操作MySQL。必须要有一个中间件,或者叫做驱动程序。驱动程序有很多。比如有mysqldb、mysqlclient、pymysql等。在这里,我们选择用pymysql。安装方式也是非常简单,通过命令 pip install pymysql 即可安装。

pip install pymysql

4、数据库连接

数据库连接之前。首先先确认以下工作完成,这里我们以一个pymysql_test数据库.以下将介绍连接mysql的示例代码:

import pymysql
 
# 设置连接数据库参数
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
cursor.execute("select 1")  # 设置查询对象
data = cursor.fetchone()  # 获取查询数据
print(data)
cursor.close()  # 关闭数据库连接

5、插入数据

# 插入数据
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
insert into user(id, username, age, password) values (null, 'ddd', 21, "444444")
"""
cursor.execute(sql)  # 执行sql语句
db.commit()  # 提交数据
db.close()  # 关闭数据库

如果在数据还不能保证的情况下,可以使用以下方式来插入数据:

sql = """
insert into user(
    id,username,gender,age,password
  ) 
  values(null,%s,%s,%s,%s);
"""
 
cursor.execute(sql,('spider',1,20,'222222'))

6、查找数据

使用pymysql查询数据。可以使用fetch*方法。查询不需要调用 commit 方法
fetchone():这个方法每次之获取一条数据。
fetchall():这个方法接收全部的返回结果。
fetchmany(size):可以获取指定条数的数据。
示例代码如下:

# fetchone
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
select * from user
"""
cursor.execute(sql)
result = cursor.fetchone()  # 获取一条数据
print(result)
cursor.close()
db.close()

或者是直接使用fetchall,一次性可以把所有满足条件的数据都取出来:

# fetchall
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
select * from user where id < 4
"""
cursor.execute(sql)
result = cursor.fetchall()  # 获取所有满足条件的数据
print(result)  # 
cursor.close()
db.close()

或者是使用fetchmany,指定获取多少条数据:

# fetchmany
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
select * from user where id < 4
"""
cursor.execute(sql)
result = cursor.fetchmany(2)  # 获取所有满足条件的数据
print(result)  #
cursor.close()
db.close()

7、删除数据

# delete data
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
delete from user where id = 4
"""
cursor.execute(sql)
db.commit()
db.close()

8、更新数据

# delete data
import pymysql
 
db = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="root",
    database="xhkdb",
    port=3306
)
cursor = db.cursor()
sql = """
update user set username="AAA" where id = 1
"""
cursor.execute(sql)
db.commit()
db.close()

二、MongoDB数据库

1、在windows 安装 mongodb

1、从服务器下载 mongodb 安装包,这里是的是 zip 的安装包,下载链接: mongodb-windows-x86_64-4.4.6.zip
3.2-python爬虫之数据库存储_第1张图片
2、下载之后在文件夹下创建data 文件夹,再进入到解压文件夹下的 bin 文件夹,目录结构如下
3.2-python爬虫之数据库存储_第2张图片
3、在bin文件夹下执行命令 mongod -dbpath “D:\mongodb\data” 启动 mongodb 服务,结果如下
3.2-python爬虫之数据库存储_第3张图片
4、再打开一个命令行窗口,在bin目录下执行 mongo 连接mongodb 服务。执行 show dbs; 可以看到已经存在的db.MongoDB会默认创建admin、config、local库。
3.2-python爬虫之数据库存储_第4张图片
5、新建 mongodb.conf,修改配置文件mongodb.conf的内容如下:
3.2-python爬虫之数据库存储_第5张图片

# 端口号,默认为27017
port=27017
 
# 数据库存放路径
dbpath=D:\mongodb\data
 
# 日志存放路径
logpath=D:\mongodb\mongodb.log
 
# 是否追加日志
logappend=true
 
# 是否启用日志,默认启用
journal=true
 
# 是否过滤无用日志信息
quiet=true

6.将MongoDB注册成Windows服务

①关闭之前的所有cmd窗口,开启新的管理员cmd,进入MongoDB的bin目录,输入

mongod -config "D:\mongodb\mongodb.conf" --install --serviceName "MongoDB"

3.2-python爬虫之数据库存储_第6张图片
②此时可以通过win + r, services.msc的服务列表中,生成了MongoDB的服务,可以设置为开机自启,之后不用每次都手动启动MongoDB

如果想启动和关闭 mongodb 服务, 可以用管理员身份执行如下命令:
启动: net start MongoDB
停止:net stop MongoDB

3.2-python爬虫之数据库存储_第7张图片
7、将MongoDB的bin目录配置到path环境变量下,之后就可以在任意处输入 mongo 登录
3.2-python爬虫之数据库存储_第8张图片

2、mongodb 三元素

三元素:数据库、集合、文档

1、文档(document):就是关系数据库中的一行。文档是一个对象,由键值对构成,是 json 的扩展形式。

{ “_id” : ObjectId(“60bb738d1b680d63598f15a1”), “username” : “aaa” }

2、集合(collection):就是关系型数据库中的表。可以存储多个文档,结构可以不固定。可以存储如下数据在同一个集合中:

{ “username” : “aaa” }

{ “age” : 17 }

{ “username” : “aaa” , “age” : 17 }

3、mongodb 操纵命令

db : 查看当前的数据库
show dbs: 查看所有的数据库
use 数据库名:切换数据库。如果数据库不存在,创建数据库(创建后要插入数据才算创建成功)
db.集合名.insert(value): 添加数据到指定集合中
db.集合名.find(): 从指定集合中查找数据。

3.2-python爬虫之数据库存储_第9张图片

4、python 操作 mongodb

#安装mongodb对应python库
pip3 install pymongo
import pymongo
 
# 获取连接 mongodb 对象,默认端口:27017
client = pymongo.MongoClient("127.0.0.1", port=27017)
 
# 获取数据库(如果没有test这个数据库也没关系)
db = client.test
 
# 获取数据库中的集合(也就是 mysql 中的表)
collection = db.qa
 
 
# 1、insert_one 加入一条文档数据到集合中
collection.insert_one({"username":"aaa"})
 
# 2、insert_many: 加入多条文档数据到集合中
collection.insert_many([{"username":"a2"},{"username":"a1"}])
 
 
# 3、find_one: 查找一条文档对象
res = collection.find_one()
print(res)  # {'_id': ObjectId('60bb6e2151ee3420356af4f0'), 'username': 'aaa'}
 
# 4、find : 查找所有文档对象
cursor = collection.find()
print(res)  # 
for d in cursor:
    print(d)
 
 
# 5、update_one: 更新一条文档对象
collection.update_one({"username":"a1"}, {"$set":{"username":"a1", "age":18}})
 
# 6、update_many: 更新多条文档对象
collection.update_many({"username":"a1"}, {"$set":{"username":"a1", "age":18}})
 
 
# 7、delete_one: 删除一条文档对象
collection.delete_one({"username":"a1", "age":18})
 
# 8、delete_many: 删除多条文档对象
collection.delete_many({"username":"aaa"})

你可能感兴趣的:(python爬虫学习笔记,python,mysql,数据库,mongodb)