- Python数据持久化教程
- Python 数据持久化 - 主页
- Python 数据持久化 - 简介
- Python 数据持久化 - 文件 API
- 使用 os 模块进行文件处理
- Python数据持久化——对象序列化
- Python 数据持久化 - Pickle 模块
- Python 数据持久化 - Marshal 模块
- Python数据持久化——Shelve模块
- Python数据持久化——dbm包
- Python 数据持久化 - CSV 模块
- Python 数据持久化 - JSON 模块
- Python 数据持久性 - XML 解析器
- Python 数据持久化 - Plistlib 模块
- Python数据持久化-Sqlite3模块
- Python 数据持久化 - SQLAlchemy
- Python 数据持久化 - PyMongo 模块
- Python 数据持久化 - Cassandra 驱动程序
- 数据持久化-ZODB
- 数据持久化 - Openpyxl 模块
- Python 数据持久性资源
- Python 数据持久化 - 快速指南
- Python 数据持久性 - 有用资源
- Python 数据持久化 - 讨论
Python 数据持久化 - PyMongo 模块
MongoDB 是一个面向文档的NoSQL数据库。它是一个在服务器端公共许可证下分发的跨平台数据库。它使用类似 JSON 的文档作为模式。
为了提供存储海量数据的能力,多个物理服务器(称为分片)互连,从而实现水平可扩展性。MongoDB 数据库由文档组成。
文档类似于关系数据库表中的一行。但是,它没有特定的架构。文档是键值对的集合——类似于字典。但是,每个文档中的 kv 对数量可能会有所不同。就像关系数据库中的表有一个主键一样,MongoDB 数据库中的文档有一个名为“_id”的特殊键。
在了解如何使用 Python 来使用 MongoDB 数据库之前,让我们先简单了解一下如何安装和启动 MongoDB。MongoDB 的社区版和商业版现已推出。社区版本可以从www.mongodb.com/download-center/community下载。
假设 MongoDB 安装在 c:\mongodb 中,可以使用以下命令调用服务器。
c:\mongodb\bin>mongod
默认情况下,MongoDB 服务器在端口号 22017 上处于活动状态。数据库默认存储在 data/bin 文件夹中,但可以通过 –dbpath 选项更改位置。
MongoDB 有自己的一组可在 MongoDB shell 中使用的命令。要调用 shell,请使用Mongo命令。
x:\mongodb\bin>mongo
类似于 MySQL 或 SQLite shell 提示符的 shell 提示符出现在该提示符之前,可以执行本机 NoSQL 命令。然而,我们对将 MongoDB 数据库连接到 Python 感兴趣。
PyMongo模块由 MongoDB Inc 自行开发,提供 Python 编程接口。使用众所周知的 pip 实用程序来安装 PyMongo。
pip3 install pymongo
假设 MongoDB 服务器已启动并正在运行(使用mongod命令)并且正在侦听端口 22017,我们首先需要声明一个MongoClient对象。它控制Python会话和数据库之间的所有事务。
from pymongo import MongoClient client=MongoClient()
使用此客户端对象与 MongoDB 服务器建立连接。
client = MongoClient('localhost', 27017)
使用以下命令创建一个新数据库。
db=client.newdb
MongoDB 数据库可以有很多集合,类似于关系数据库中的表。Collection 对象是通过Create_collection()函数创建的。
db.create_collection('students')
现在,我们可以在集合中添加一个或多个文档,如下所示 -
from pymongo import MongoClient client=MongoClient() db=client.newdb db.create_collection("students") student=db['students'] studentlist=[{'studentID':1,'Name':'Juhi','age':20, 'marks'=100}, {'studentID':2,'Name':'dilip','age':20, 'marks'=110}, {'studentID':3,'Name':'jeevan','age':24, 'marks'=145}] student.insert_many(studentlist) client.close()
要检索文档(类似于 SELECT 查询),我们应该使用find()方法。它返回一个游标,借助该游标可以获得所有文档。
students=db['students'] docs=students.find() for doc in docs: print (doc['Name'], doc['age'], doc['marks'] )
要查找特定文档而不是集合中的所有文档,我们需要将过滤器应用于 find() 方法。过滤器使用逻辑运算符。MongoDB 有自己的一组逻辑运算符,如下所示 -
先生编号 | MongoDB 运算符 & 传统逻辑运算符 |
---|---|
1 |
$当量 等于 (==) |
2 |
$gt 大于 (>) |
3 |
$gte 大于或等于 (>=) |
4 |
美元 如果等于数组中的任何值 |
5 |
$lt 小于 (<) |
6 |
$LTE 小于或等于 (<=) |
7 |
$ne 不等于 (!=) |
8 |
$nin 如果不等于数组中的任何值 |
例如,我们有兴趣获取 21 岁以上学生的名单。在find()方法的过滤器中使用 $gt 运算符,如下所示 -
students=db['students'] docs=students.find({'age':{'$gt':21}}) for doc in docs: print (doc.get('Name'), doc.get('age'), doc.get('marks'))
PyMongo 模块提供update_one()和update_many()方法,用于修改满足特定过滤器表达式的一个或多个文档。
让我们更新名称为 Juhi 的文档的标记属性。
from pymongo import MongoClient client=MongoClient() db=client.newdb doc=db.students.find_one({'Name': 'Juhi'}) db['students'].update_one({'Name': 'Juhi'},{"$set":{'marks':150}}) client.close()