【Python】操作数据库MongoDB

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 上一篇,我学习了Python使用PyMySQL来连接MySQL数据库,学了如何下载、安装、使用依赖库,上一篇的🔗Python操作MySQL主要是连接关系型数据库,而在实际使用过程中,使用mondoDB的频率也比较高。应运而生,学习这一篇主要也是相当重要,因为使用这些数据库的频率比较高、适用场景比较广泛。 MongoDB是为快速开发互联网Web应用而设计的数据库系统。MongoDB的设许目标是极简、灵活、作为Web应用栈的一部分。MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。



上一篇,我学习了Python使用PyMySQL来连接MySQL数据库,学了如何下载、安装、使用依赖库,上一篇的🔗Python操作MySQL主要是连接关系型数据库,而在实际使用过程中,使用mondoDB的频率也比较高。应运而生,学习这一篇主要也是相当重要,因为使用这些数据库的频率比较高、适用场景比较广泛。

MongoDB是为快速开发互联网Web应用而设计的数据库系统。MongoDB的设许目标是极简、灵活、作为Web应用栈的一部分。MongoDB的数据模型是面向文档的,所谓文档是一种类似于JSON的结构,简单理解MongoDB这个数据库中存的是各种各样的JSON。


🏮1 安装依赖库

Python下的使用pip安装PyMongo

上一篇介绍了如何在Mac环境下安装PyMySQL,这一次同样可以使用pip这个工具安装mongoDB。

如何安装开发库驱动,可以参考官方提供的方式:开始使用MongoDB开始

具体的可以参考官方提供的文档:Python连接MongoDB的驱动PyMongo 3


# 安装驱动器

Aion.Liu $ pip install pymongo

Collecting pymongo

 Downloading pymongo-4.2.0-cp310-cp310-macosx_10_9_universal2.whl (373 kB)

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 373.4/373.4 kB 20.1 kB/s eta 0:00:00

Installing collected packages: pymongo

Successfully installed pymongo-4.2.0


# 查看已经安装的依赖库以及版本

Aion.Liu $ pip list

Package    Version

---------- -------

meson      0.63.0

pip        22.2.2

protobuf   4.21.4


# 可以看到我们已经成功安装了4.2.0版本的PyMongo驱动器

pymongo    4.2.0

PyMySQL    1.0.2

setuptools 63.2.0

xmltodict  0.13.0


当然,如果服务器或者本地实验环境的版本同安装的驱动器不在同一个兼容版本区间内,那么我们可以参考是否一致。官方提供的兼容版本:https://www.mongodb.com/docs/drivers/pymongo/#compatibility


🏮 2 如何操作MongoDB

python使用PyMongo操作MongoDB

🎈 2.1 连接数据库

首先我们将连接数据库的代码写入到一个c09.py的文件,然后执行这个文件:

frompymongoimportMongoClientdefmongodb_init01():
# m1client=MongoClient(host='127.0.0.1', port=27017)
print(client)
defmongodb_init02():
# m2uri="mongodb://{}:{}".format('127.0.0.1', 27017)
client=MongoClient(uri)
print(client)
if__name__=='__main__':
mongodb_init01()
mongodb_init02()


连接后,输出连接信息内容:

# 执行命令

Aion.Liu$pythonc09.pyMongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True)
MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True)


🎈 2.2 操作数据|INSERT_ONE


我们在2.1的基础上,创建一个python_study数据库

>>>python_study=client.python_study


在数据库中,创建一个集合users,并插入一条数据。


# 创建集合并插入一条数据

>>>user=python_study.users.insert_one({"name" : "Aion.Liu", "age" : 18, "sex" : '1'})
>>>print(user)
<pymongo.results.InsertOneResultobjectat0x10d7379a0>>>>


下面我们在可视化工具种查看数据:


🎈 2.3 操作数据|INSERT_MANY

如果我们想一次性插入一个集合,要如何操作呢,也很简单:

>>>user_list= [
...     {"name": "XiaoMing",  "age": 15, "sex": "0"},
...     {"name": "Lucy",  "age": 18, "sex": "1"},
...     {"name": "HanMeimei", "age": 16, "sex": "1"},
...     {"name": "Lily", "age": 19, "sex": "1"},
...     {"name": "Jim", "age": 15, "sex": "0"},
...     {"name": "Kate","age": 14, "sex": "9"},
...     {"name": "Tom", "age": 13, "sex": "1"},
...     {"name": "Ann","age": 12, "sex": "2"},
...     {"name": "LiLei", "age": 17, "sex": "0"},
...     {"name": "LinTao", "age": 18, "sex": "1"}
... ]
>>>>>>insert_users=python_study.insert_many(user_list)


然后我们再回去可视化工具中,查看已经插入的数据:


🎈 2.4 操作数据|FIND_ONE/FIND


这些方法同我们在操作MongoDB使用的函数都差不多,有兴趣的可以自己手工执行下,这里我放我所操作实验的图片。


  • 获取一条数据
  • 遍历获取多条数据
  • 查询年龄等于13的学生用户

其他我就不在赘述,主要是同MongoDB的操作相差不是很大。官方提供的CRUD的操作:https://www.mongodb.com/docs/manual/crud/

🎈 2.5 参考

[1] MongoDB官方提供的CURD操作:https://www.mongodb.com/docs/manual/crud/

[2] MongoDB兼容性:https://www.mongodb.com/docs/drivers/pymongo/#compatibility

[3] MongoDB官方文档说明:https://www.mongodb.com/docs/drivers/pymongo/

[4] MongoDB 使用语言操作说明页:https://www.mongodb.com/docs/drivers/?_ga=2.156034302.470735255.1660048923-277170845.1660048923

🎈 3 推荐一些可视化工具

MongoDB的可视化工具可谓是很多,大家根据各自的需要斟酌使用

关于可视化工具的选择,大家可以搜索下,任意选择就好,这里推荐下老师博客使用的可视化工具NoSQL Manager for MongoDB 由于我需要连接其他的数据库,所以这里选择了DBeaver。其他的一些可视化工具就有很多了,如下所示:

  • MongoDB Compass Community(社区版)
  • NoSQLBooster
  • Cluster Control
  • Mongo Management Studio
  • Nosqlclient
  • Robo 3T(Robomongo、Studio 3T)
  • Navicat for MongoDB
  • Aqua Data Studio Mongo
  • phpMoAdmin
  • Mongotron
  • Mongolime
  • Mongo-express

🎈 4 学习总结

常言道:“学如逆海行舟,不进则退〞、活到老,学到老。所以,当我得知我想要学习另外一门语言的时候,我应该有机会学习,虽然我不拿着他赚钱,我想着这次学习机会对我以后的职业生涯有莫大的帮助,可以让我对开发语言这一领域有一个较为全面的认识,可以促使我尽快成长为一名合格的开发者。总而言之,通过本次自己定下的目标来学习,为促使我成为良好的代码工程师而努力。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
14天前
|
关系型数据库 MySQL 数据库连接
python脚本:连接数据库,检查直播流是否可用
【10月更文挑战第13天】本脚本使用 `mysql-connector-python` 连接MySQL数据库,检查 `live_streams` 表中每个直播流URL的可用性。通过 `requests` 库发送HTTP请求,输出每个URL的检查结果。需安装 `mysql-connector-python` 和 `requests` 库,并配置数据库连接参数。
114 68
|
13天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第21天】本文探讨了MongoDB Atlas的核心特性、实践应用及对云原生数据库未来的思考。MongoDB Atlas作为MongoDB的云原生版本,提供全球分布式、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了云原生数据库的未来趋势,如架构灵活性、智能化运维和混合云支持,并分享了实施MongoDB Atlas的最佳实践。
|
14天前
|
NoSQL Cloud Native atlas
探索云原生数据库:MongoDB Atlas 的实践与思考
【10月更文挑战第20天】本文探讨了MongoDB Atlas的核心特性、实践应用及对未来云原生数据库的思考。MongoDB Atlas作为云原生数据库服务,具备全球分布、完全托管、弹性伸缩和安全合规等优势,支持快速部署、数据全球化、自动化运维和灵活定价。文章还讨论了实施MongoDB Atlas的最佳实践和职业心得,展望了云原生数据库的发展趋势。
|
15天前
|
关系型数据库 MySQL 数据处理
探索Python中的异步编程:从asyncio到异步数据库操作
在这个快节奏的技术世界里,效率和性能是关键。本文将带你深入Python的异步编程世界,从基础的asyncio库开始,逐步探索到异步数据库操作的高级应用。我们将一起揭开异步编程的神秘面纱,探索它如何帮助我们提升应用程序的性能和响应速度。
|
16天前
|
存储 NoSQL MongoDB
MongoDB 数据库引用
10月更文挑战第20天
11 1
|
22天前
|
存储 NoSQL MongoDB
基于阿里云数据库MongoDB版,微财数科“又快又稳”服务超7000万客户
选择MongoDB主要基于其灵活的数据模型、高性能、高可用性、可扩展性、安全性和强大的分析能力。
|
21天前
|
存储 NoSQL MongoDB
mongodb的数据库表怎么创建
在此过程中,理解并掌握这些基本操作,是深入探索MongoDB魅力,乃至构建高效数据解决方案的关键所在。通过实践,您将更加深刻地体会到这种随需应变的数据管理模式带来的便利与效率提升。
22 0
|
22天前
|
存储 NoSQL MongoDB
小川科技携手阿里云数据库MongoDB:数据赋能企业构建年轻娱乐生态
基于MongoDB灵活模式的特性,小川实现了功能的快速迭代和上线,而数据库侧无需任何更改
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
2月前
|
存储 NoSQL 关系型数据库
非关系型数据库-MongoDB技术(二)
非关系型数据库-MongoDB技术(二)
下一篇
无影云桌面