【Python】操作数据库MongoDB

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 MongoDB,通用型 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
相关文章
|
JavaScript 关系型数据库 MySQL
❤Nodejs 第六章(操作本地数据库前置知识优化)
【4月更文挑战第6天】本文介绍了Node.js操作本地数据库的前置配置和优化,包括处理接口跨域的CORS中间件,以及解析请求数据的body-parser、cookie-parser和multer。还讲解了与MySQL数据库交互的两种方式:`createPool`(适用于高并发,通过连接池管理连接)和`createConnection`(适用于低负载)。
19 0
|
1天前
|
缓存 NoSQL 关系型数据库
在Python Web开发过程中:数据库与缓存,MySQL和NoSQL数据库的主要差异是什么?
MySQL与NoSQL的主要区别在于数据结构、查询语言和可扩展性。MySQL是关系型数据库,依赖预定义的数据表结构,使用SQL进行复杂查询,适合垂直扩展。而NoSQL提供灵活的存储方式(如JSON、哈希表),无统一查询语言,支持横向扩展,适用于处理大规模、非结构化数据和高并发场景。选择哪种取决于应用需求、数据模型及扩展策略。
7 0
|
2天前
|
SQL 关系型数据库 MySQL
第十三章 Python数据库编程
第十三章 Python数据库编程
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
2天前
|
JSON 数据格式 索引
python 又一个点运算符操作的字典库:Munch
python 又一个点运算符操作的字典库:Munch
20 0
|
3天前
|
NoSQL MongoDB 数据库
MongoDB数据恢复—MongoDB数据库文件被破坏的数据恢复案例
服务器数据恢复环境: 一台Windows Server操作系统服务器,服务器上部署MongoDB数据库。 MongoDB数据库故障&检测: 工作人员在未关闭MongoDB数据库服务的情况下,将数据库文件拷贝到其他分区。拷贝完成后将原MongoDB数据库所在分区进行了格式化操作,然后将数据库文件拷回原分区,重新启动MongoDB服务,服务无法启动。
|
6天前
|
NoSQL MongoDB Redis
Python与NoSQL数据库(MongoDB、Redis等)面试问答
【4月更文挑战第16天】本文探讨了Python与NoSQL数据库(如MongoDB、Redis)在面试中的常见问题,包括连接与操作数据库、错误处理、高级特性和缓存策略。重点介绍了使用`pymongo`和`redis`库进行CRUD操作、异常捕获以及数据一致性管理。通过理解这些问题、易错点及避免策略,并结合代码示例,开发者能在面试中展现其技术实力和实践经验。
127 8
Python与NoSQL数据库(MongoDB、Redis等)面试问答
|
6天前
|
SQL 关系型数据库 MySQL
Python与MySQL数据库交互:面试实战
【4月更文挑战第16天】本文介绍了Python与MySQL交互的面试重点,包括使用`mysql-connector-python`或`pymysql`连接数据库、执行SQL查询、异常处理、防止SQL注入、事务管理和ORM框架。易错点包括忘记关闭连接、忽视异常处理、硬编码SQL、忽略事务及过度依赖低效查询。通过理解这些问题和提供策略,可提升面试表现。
25 6
|
7天前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
使用Pandas在Python中创建数据透视表的步骤包括:安装Pandas库,导入它,创建或读取数据(如DataFrame),使用`pd.pivot_table()`指定数据框、行索引、列索引和值,计算聚合函数(如平均分),并可打印或保存结果到文件。这允许对数据进行高效汇总和分析。
10 2
|
12天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。

热门文章

最新文章