乐之之

知而行乐,乐而行之,天道酬勤,学无止境。
MongoDB
  MongoDB是一个基于分布式文件存储的数据库。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
  MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似jsonbson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引

一、环境配置

(一)下载地址

(二)安装步骤

  • 按照提示点击下一步即可,需要注意的是记住保存的路径。
  • 建议:在自定义文件路径时,新建MongoDB文件夹,将文件安装在文件夹内。

如图:

1、点击Custom,自定义安装路径。

 

2、安装完成后,打开文件路径,点击bin目录,复制文件路径。

3、计算机--右击--属性--高级系统设置--环境变量--系统变量--path--新建,将bin目录复制进去,点击确定。

4、再次找到文件路径,进入data文件夹内,创建两个新的文件夹db和log。

5、点击完成后打开cmd窗口输入以下指令:

  • mongod -dbpath "E:\MongoDB\data\db" -logpath "E:\MongoDB\data\log\mongo.log"
  • 注意:我这里是在E盘,可以根据自己保存的位置进行修改。
  • 输入之后,不要关闭该cmd窗口,重新打开一个cmd窗口,输入mongo来启动MongoDB shell 端。

6、查看新创建的文件夹db、log内是否有新文件产生,有新文件则表示环境配置成功。

  • 配置成功后,将两个cmd窗口关闭即可。

二、数据库的操作

  • 打开cmd窗口,输入mongo,即显示mogondb配置信息,同时进入mongodb输入库。
  • 输入show dbs,即显示初始化的三个数据库。

  

(一)MongoDB基本命令

CMD命令  注释
mongod --install --dbpath 数据目录 --logpath 日志目录\日志名称.log 创建 MongoDB服务
mongodb 处理MongoDB的主要进程。它处理数据请求,管理数据存储,和执行后台管理操作。当我们运行mongod命令意味着正在启动MongoDB进程,并且在后台运行。
net start mongodb 启动 MongoDB服务
sc delete mongodb 删除 MongoDB服务
mongod --remove 卸载 MongoDB服务
net stop mongodb 关闭 MongoDB服务

(二)数据库增删改查操作

1、创建数据库

注意:该数据库存在,则进入,不存在则创建。

  • use+数据库名:use database_name

在mongodb中的一张表被称为一个集合。

  • db.func1.insert({name:"张三"})

该表不存在则创建,然后插入数据,存在,则进入,插入数据。

2、删除数据库

  • 删除指定数据库之前,先进入该数据库:db.dropDatabase()

  • 删除指定表:db.func1.drop()

  • 指定删除数据:db.func.remove({name:"张三"})

3、修改数据库

  • 修改指定数据:db.func.update({name:"坤哥"},{$set:{name:"坤姐"}})

4、查询数据库

  • 查看数据库:show dbs

  • 查看当前存在的数据库位置:db

  • 查看数据库内表/集合:show collections

  • 查看表的内容db.func1.find()

  • 指定查看表的具体内容db.func1.find({name:"张三"})

三、案例

结合pycharm将数据,保存至mongodb数据库,在这里以豆果美食代码为例。

(一)导入模块

  • import pymongo

(二)连接数据库

1、在基础属性中添加连接数据库的代码

  • 若数据库不存在则自动创建数据库。

self.client = pymongo.MongoClient(host="localhost", port=27017)
self.db = self.client["spider_data1"]

2、用生成器返回数据

data_list = html.xpath('.//ul[@class="cook-list"]//li[@class="clearfix"]')
for data in data_list:
    title = data.xpath('./div[@class="cook-info"]/a/text()')[0]
    major = data.xpath('./div/p/text()')[0]
    score = data.xpath('./div/div[1]/span[2]/text()')[0]
    yield{
        "标题":title,
        "配料":major,
        "评分":score
    }

3、循环逐条插入数据库

for item in self.parse_data_index(response):
    self.db.douguo1.insert_one(item)

(三)完整代码

import requests
from lxml import etree
import pymongo

class Dou_Guo(object):
    def __init__(self):
        self.headers={"User-Agent": ""}
        self.client = pymongo.MongoClient(host="localhost", port=27017)
        self.db = self.client["spider_data1"]

    """发起请求并获取数据"""
    def get_data_index(self):
        for i in range(0,2):
            url = "https://www.douguo.com/caipu/%E5%AE%B6%E5%B8%B8%E8%8F%9C/0/{}".format(i*20)
            response = requests.get(url,headers=self.headers)
            if response.status_code ==200:

                yield response.text
            else:
                print("url获取失败!")

    """数据解析"""
    def parse_data_index(self,resp):
        # 创建对象

        html = etree.HTML(resp)
        # 找到所有标签
        try:
            data_list = html.xpath('.//ul[@class="cook-list"]//li[@class="clearfix"]')
            for data in data_list:
                title = data.xpath('./div[@class="cook-info"]/a/text()')[0]
                major = data.xpath('./div/p/text()')[0]
                score = data.xpath('./div/div[1]/span[2]/text()')[0]
                yield{
                    "标题":title,
                    "配料":major,
                    "评分":score
                }
        except IndexError:
            pass
    """实现整个代码的业务逻辑"""
    def run(self):
        for response in self.get_data_index():
            for item in self.parse_data_index(response):
                self.db.douguo1.insert_one(item)

if __name__ == '__main__':
    process = Dou_Guo()
    process.run()

四、pycharm中mongodb的环境配置。

(一)环境配置

  • 开pycharm,在打开设置。

  • 在打开设置中找到插件管理,搜索mongo plugin。

  • 找到此插件,点击下载安装即可。

  • 安装成功后,重启pycharm,找到Mongo Explorer。

  • 打开之后,连接数据库。

  • 点击测试连接。

  • 连接成功后,进行案例测试。

(二)案例测试

  • 输入以下完整代码。
import pymongo
class MongoDB(object):
    def __init__(self):
        # mogodb端口默认27017
        self.client = pymongo.MongoClient(host="localhost",port=27017)
        self.db = self.client["spider_data"]

    def add_data_one(self):
        # func,创建集合 ; insert_one 插入一条数据
        result =self.db.func.insert_one({"name":"张三","age":18,"sex":"男"})
        print(result)
    def add_data_many(self,data):
        result = self.db.func.insert_many(data)

    def find_data(self):
        result = self.db.func.find({"name":"李四"})
        result = self.db.func.find()
        for data in result:
            print(data)




if __name__ == '__main__':
    mdb = MongoDB()
    data = [
        {"name":"李四","age":20,"sex":"男"},
        {"name": "王五", "age": 22, "sex": "男"},
        {"name": "赵六", "age": 18, "sex": "男"},
        {"name": "李七", "age": 19, "sex": "男"},
    ]
    mdb.find_data()
  • 运行之后,点击spider_data的func表。

  • 点击之后显示表数据,则表示成功。

如若点击之后不显示可视化数据表信息见以下关于Mongodb在pycharm中可视化问题,链接如下。

在pycharm中MongoDB数据表无法可视化的问题 - 乐之之 - 博客园 (cnblogs.com)

posted on 2022-12-27 11:29  乐之之  阅读(65)  评论(0编辑  收藏  举报