- 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 数据库由文档组成。
文档类似于关系数据库中表的一行。但是,它没有特定的模式。文档是键值对的集合——类似于字典。但是,每个文档中键值对的数量可能不同。就像关系数据库中的表有一个主键一样,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 数据库可以有多个集合,类似于关系数据库中的表。集合对象由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 |
$eq 等于 (==) |
2 |
$gt 大于 (>) |
3 |
$gte 大于或等于 (>=) |
4 |
$in 如果等于数组中的任何值 |
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 的文档的 marks 属性。
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()