Python爬虫从0到1(第十天)——pymongo的应用

本文介绍了如何使用Python的pymongo模块与MongoDB进行交互,包括安装pymongo、建立数据库连接、创建数据库和集合,以及执行增删改查等基本操作。示例代码详细展示了如何插入单个和多个文档、查询数据、修改记录以及删除文档。
摘要由CSDN通过智能技术生成

pymongo的应用

在上一篇文章中,我们对于MongoDB有了一个初步的认识与使用,那么今天我们就来看关于MongoDB和Python之间应该如何进行交互。要知道两个几乎不同的东西要进行交互的话是必然的有一座桥梁的,Python也不能无缘无故就能够直接对MongoDB进行操作,因此我们需要借助于一些第三方的手段来实现Python对MongoDB的操作,而这则是一个名为pymongo的第三方模块,该模块为提供了Python连接MongoDB的驱动组件,那么接下来我们就来对其进行学习吧。

一、pymongo的初步应用

pip install pymongo

我们可以在终端通过上方命令来进行pymongo的安装,安装后再代码中直接import查看是否能够导入该模块。

1.1 建立连接并创建一个数据库

创建数据库需要使用 MongoClient 对象,并且指定连接的 URL 地址和要创建的数据库名。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')	# 建立mongo与python之间的连接
mydb = myclient['mydb']	# 创建数据库
# 注意:在 MongoDB 中,数据库只有在内容插入后才会创建! 就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

我们可以读取 MongoDB 中的所有数据库,并判断指定的数据库是否存在:

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
# mydb = myclient['mydb']
db_list = myclient.list_database_names()    # 获取所有数据库名
print(db_list)
if 'mydb' in db_list:
    print('数据库已经存在')
1.2 创建集合

MongoDB 使用数据库对象来创建集合,如下:

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合

判断集合是否存在:

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
collist = mydb.list_collection_names()  # 返回所有集合名
if 'set' in collist:
    print('集合已经存在')

二、pymongo的增删改查

增删改查的操作其实几乎与我们在MongoDB提供的终端中所使用的命令几乎一致,接下来我们就来实际操作一下。

2.1添加数据
2.1.1 插入单个文档

集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
mydict = {'name': 'xiaomei', 'age': 18, 'sex': 'girl'}
res = mycol.insert_one(mydict)
print(res)

运行结果不再截图展示,请大家自行测试代码并查看。

insert_one() 方法返回 InsertOneResult 对象,该对象包含 inserted_id 属性,它是插入文档的 id 值。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
mydict = {'name': 'xiaomei', 'age': 18, 'sex': 'girl'}
res = mycol.insert_one(mydict)
print(res.inserted_id)

如果我们在插入文档时没有指定 _id,MongoDB 会为每个文档添加一个唯一的 id

2.1.2 插入多个文档

集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
mylist = [
    {'name': 'xiaomei', 'age': 18, 'sex': 'girl'},
    {'name': 'xiaofang', 'age': 18, 'sex': 'girl'},
    {'name': 'xiaowang', 'age': 18, 'sex': 'boy'}
]
x = mycol.insert_many(mylist)	# 插入多条数据
print(x.inserted_ids)
2.2 查询数据
2.2.1 查询单条数据

我们可以使用 find_one() 方法来查询集合中的一条数据。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
x = mycol.find_one()
print(x)
2.2.2 查询所有数据

find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
x = mycol.find()
for i in x:
    print(i)
2.2.3 查询指定字段的数据

我们可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
x = mycol.find({},{'_id': 0, 'name':1, 'age': 1})
# 此处注意,设置为1表示能够提取到并可以在控制台打印出来,为0则不会进行提取,也就是说不会在控制台输出
for i in x:
    print(i)
2.3 修改数据

我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

如果查找到的匹配数据多于一条,则只会修改第一条。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
myquery = {'age': 18}
new_value = {'$set': {'age': 30}}
mycol.update_one(myquery, new_value)	# 仅修改一条数据
# 如果要修改多条数据可以使用update_many()方法
for i in mycol.find():
    print(i)
2.4 删除数据

我们可以使用 delete_one() 方法来删除一个文档,该方法第一个参数为查询对象,指定要删除哪些数据。

import pymongo

myclient = pymongo.MongoClient('mongodb://localhost:27017/')
mydb = myclient['mydb']   # 创建数据库
mycol = mydb['set']    # 创建集合
myquery = {'name': 'quanmou'}
mycol.delete_one(myquery)
# 同修改一样,如果要删除多条数据的话使用delete_many()方法实现
for i in mycol.find():
    print(i)

好啦,到这里本篇文章就结束了,那么关于存储的话暂时以MongoDB为例,其他常用数据库与Python之间的交互大家可自行查阅其他相关资料或者等待泉某后期专栏结束之后更新!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

quanmoupy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值