MongoDB数据持久化笔记
1.1 MongoDB介绍
【1】MongoDB为非关系型数据库,基于key-value方式存储
【2】MongoDB基于磁盘存储,而Redis基于内存
【3】MongoDB数据类型单一,就是JSON文档
MySQL数据类型:数值类型、字符类型、枚举类型、日期时间类型
Redis数据类型:字符串、列表、哈希、集合、有序集合
MongoDB数据类型: JSON文档
# 此生铭记: MongoDB是基于磁盘存储的非关系型数据库,数据类型很单一,值就是JSON文档
【4】和MySQL对比
MySQL: 库 - 表 - 表记录
MongoDB:库 - 集合 - 文档
【5】特性
MongoDB无需提前建库建集合,直接使用即可,会自动创建
1.2 MongoDB常用命令
【1】进入命令行: mongo
【2】查看所有库: show dbs
【3】切换库: use 库名
【4】查看库中集合:show collections | show tables
【5】查看集合文档:db.集合名.find().pretty()
【6】统计文档个数:db.集合名.count()
【7】删除集合: db.集合名.drop()
【8】删除库: db.dropDatabase()
1.3 与Python交互
-
pymongo模块
【1】模块名: pymongo sudo pip3 install pymongo 【2】使用流程 2.1》创建数据库连接对象 2.2》创建库对象(库可以不存在) 2.3》创建集合对象(集合可以不存在) 2.4》在集合中插入文档
-
示例代码
""" 库: noveldb 集合: novelset 文档: {'title':'花千骨', 'actor':'美丽的赵丽颖'} """ import pymongo # 创建3个对象: 连接对象 库对象 集合对象 conn = pymongo.MongoClient(host='localhost', port=27017) db = conn['noveldb'] myset = db['novelset'] # 插入文档 myset.insert_one({'title':'花千骨', 'actor':'美丽的赵丽颖'})
-
笔趣阁数据持久化
""" 笔趣阁小说爬虫,所抓数据:href、title、author、comment 思路步骤: 1、确认数据来源(右键->查看网页源代码->搜索关键字) 2、确认静态:观察URL地址规律 3、写正则表达式 """ import requests import re import time import random import pymongo class NovelSpider: def __init__(self): self.url = 'https://www.biqukan.cc/fenlei1/{}.html' self.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'} # 3个对象 self.conn = pymongo.MongoClient('localhost', 27017) self.db = self.conn['noveldb'] self.myset = self.db['novelset'] def get_html(self, url): """请求,发请求获取响应内容html""" html = requests.get(url=url, headers=self.headers).text # 直接调用解析函数 self.parse_html(html) def parse_html(self, html): """解析提取数据""" regex = '<div class="caption">.*?href="(.*?)" title="(.*?)">.*?<small class="text-muted fs-12">(.*?)</small>.*?>(.*?)</p>' # r_list: [(href,title,author,comment), (), ...] r_list = re.findall(regex, html, re.S) # 直接调用数据处理函数 self.save_html(r_list) def save_html(self, r_list): """数据处理函数""" for r in r_list: # r:(href, title, author, comment) item = {} item['href'] = r[0] item['title'] = r[1] item['author'] = r[2] item['comment'] = r[3] # 将数据存入mongodb数据库 self.myset.insert_one(item) print(item) def crawl(self): """爬虫逻辑函数""" for page in range(1, 3): page_url = self.url.format(page) self.get_html(url=page_url) # 控制数据抓取频率 time.sleep(random.randint(1, 3)) if __name__ == '__main__': spider = NovelSpider() spider.crawl()
Mac下的mongoDB的安装简记
前提条件
安装(此处以4.2社区版本为例)
运行
连接使用
由于mongodb之后不开源了,所以现在执行该命令brew install mongodb已经无效。这也导致我在安装过程中走了不少弯路,希望这篇文章能对各位猿友有帮助。
官网安装教程:install-mongodb-on-os-x
前提条件
安装了XCode
安装了Homebrew
切换到官方安装包源
brew tap mongodb/brew
安装(此处以4.2社区版本为例)
brew install mongodb-community@4.2
除了安装包文件,安装还创建了以下文件和目录:
配置文件(/usr/local/etc/mongod.conf)
日志目录(/usr/local/var/log/mongodb)
数据目录(/usr/local/var/mongodb)
运行
我们可以使用brew将MongoDB作为macOS服务运行,也可以作为后台进程手动运行MongoDB。
建议将MongoDB作为macOS服务运行,因为这是官方建议🤣
以macOS服务运行:
brew services start mongodb-community@4.2
手动运行为后台进程:
mongod --config /usr/local/etc/mongod.conf --fork
到此为止,MongoDB的安装和运行就结束了,可以输入以下命令验证MongoDB是否正在运行
ps aux | grep -v grep | grep mongod
也可以在日志文件中查看mongod进程的当前状态:
/usr/local/var/log/mongodb/mongo.log
连接使用
mongo
如何增加权限验证:2020年了,你的MongoDB加权限验证了么
————————————————
版权声明:本文为CSDN博主「CC_leather」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/CC_leather/article/details/105051719