• 技术学习:Python(09)|操作MongoDB


    活动地址:CSDN21天学习挑战赛

    在这里插入图片描述

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

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

    🏮1 使用pip安装PyMongo

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

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

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

    在这里插入图片描述

    # 安装驱动器
    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

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

    🏮 2 python使用PyMongo操作MongoDB

    🎈 2.1 连接数据库

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

    from pymongo import MongoClient
    
    def mongodb_init01():
        # m1
        client = MongoClient(host='127.0.0.1', port=27017)
        print(client)
    
    def mongodb_init02():
        # m2
        uri = "mongodb://{}:{}".format('127.0.0.1', 27017)
        client = MongoClient(uri)
        print(client)
    
    if __name__ == '__main__':
        mongodb_init01()
        mongodb_init02()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

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

    # 执行命令
    Aion.Liu $ python c09.py
    MongoClient(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)
    
    • 1
    • 2
    • 3
    • 4

    🎈 2.2 操作数据|INSERT_ONE

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

    >>> python_study = client.python_study
    
    • 1

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

    # 创建集合并插入一条数据
    >>> user = python_study.users.insert_one({"name" : "Aion.Liu", "age" : 18, "sex" : '1'})
    >>> print(user)
    <pymongo.results.InsertOneResult object at 0x10d7379a0>
    >>>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    下面我们在可视化工具种查看数据:
    在这里插入图片描述

    🎈 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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    然后我们再回去可视化工具中,查看已经插入的数据:
    在这里插入图片描述

    🎈 2.4 操作数据|FIND_ONE/FIND

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

    • 获取一条数据
      在这里插入图片描述

    • 遍历获取多条数据
      在这里插入图片描述

    • 查询年龄等于13的学生用户
      在这里插入图片描述

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

    🎈 2.5 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

  • 相关阅读:
    《痞子衡嵌入式半月刊》 第 64 期
    2023华为杯数学建模D题第三问——区域双碳目标情景设计样例
    bug记录——设置了feign的fallback,但是没有生效
    icu是哪个国家的域名?icu是什么域名?
    在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层
    Java核心知识:日期和时间总结 -- Date、DateFormat、Calendar
    ELFK 分布式日志收集系统
    全网最细,Selenium自动化测试项目实战技巧,从0到1精通自动化测试...
    Python列表基础与高级应用详解
    java学习day18(Java核心类库)多线程
  • 原文地址:https://blog.csdn.net/L_Lycos/article/details/126255341