• 【21天Python进阶学习挑战赛】[day9]操作MongoDB数据库



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

     学习知识点

    操作MongoDB数据库:100天精通Python(进阶篇)——第40天:操作MongoDB数据库_无 羡ღ的博客-CSDN博客

    1、安装pymongo库

    MongoDB数据库入门到精通看这一篇就够了_无 羡ღ的博客-CSDN博客_mongo数据库入门

    pip install pymongo 

    2、数据库操作

    2.1 连接数据库

    创建数据库连接需要使用 MongoClient 对象,并且指定连接的 IP 地址、端口号,创建的数据库名

    1. from pymongo import MongoClient
    2. def mongodb_init01():
    3. """数据库连接方式1"""
    4. client = MongoClient(host='127.0.0.1', port=27017)
    5. print(client)
    6. def mongodb_init02():
    7. """数据库连接方式2"""
    8. uri = "mongodb://{}:{}".format('127.0.0.1', 27017)
    9. client = MongoClient(uri)
    10. print(client)
    11. if __name__ == '__main__':
    12. mongodb_init01()
    13. mongodb_init02()
    14. # 输出结果
    15. MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True)
    16. MongoClient(host=['127.0.0.1:27017'], document_class=dict, tz_aware=False, connect=True)

    2.2 数据库操作

    数据库的相关操作有:查看所有数据库名称、判断数据库是否存在、使用现有数据库、创建不存在的数据库、删除数据库

    注意:

    database_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_database_names()。
    在 MongoDB 中,数据库只有在内容插入后才会创建。就是说,数据库创建后要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。

    1. # 返回当前所有数据库名称
    2. databases_list = client.list_database_names()
    3. # 判断数据库是否存在
    4. if 'test001' in database_names:
    5. print("数据库已存在")
    6. else:
    7. print("数据库不存在")
    8. # 使用现有数据库(数据库名:test_database)
    9. test_database = client.test_database
    10. # 创建不存在的数据库并使用
    11. new_database = client.new_database
    12. # 删除现有数据库
    13. client.drop_database('new_database')

    2.3 集合操作

    集合的相关操作有:查看所有集合名称、判断集合是否存在、使用现有集合、创建不存在的集合、删除集合

    注意:

    collection_names 在最新版本的 Python 中已废弃,Python3.7+ 之后的版本改为了 list_collection_names()。
    在 MongoDB 中,集合只有在内容插入后才会创建。就是说,集合创建后要插入一个数据,集合才会真正创建。

    1. # 查看当前数据库中的所有集合
    2. collection_names = new_database.list_collection_names()
    3. # 判断一个集合是否存在
    4. if 'test001' in collection_names:
    5. print("集合已存在")
    6. else:
    7. print("集合不存在")
    8. # 获取指定数据库下的所有集合对象
    9. collections = test_database.list_collections()
    10. for collection in collections:
    11. print('获取集合:', collection)
    12. # 使用一个已存在数集合(集合名称:test_collection)
    13. test_collection = new_database.test_collection
    14. # 创建一个新的集合
    15. new_collection = new_database.new_collection
    16. # 删除一个集合
    17. new_database.drop('new_collection')

    2.4 插入文档 

    MongoDB 中的一个文档类似 SQL 表中的一条记录

    •  插入一个文档
    1. # 集合中插入文档使用 insert_one() 方法,该方法的第一参数是字典 name => value 对
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection = new_database.new_collection
    8. # 使用insert_one插入一条数据
    9. x = new_collection.insert_one({"name": "张三", "age": 18})
    10. print(x) # 输出结果:
    • 插入多个文档
    1. # 集合中插入多个文档使用 insert_many() 方法,该方法的第一参数是字典列表。
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection = new_database.new_collection
    8. mylist = [
    9. {"name": "张飞", "hometown": "蜀国", "age": 30, "sex": "男"},
    10. {"name": "关羽", "hometown": "蜀国", "age": 40, "sex": "男"},
    11. {"name": "刘备", "hometown": "蜀国", "age": 50, "sex": "男"},
    12. {"name": "曹操", "hometown": "魏国", "age": 45, "sex": "男"},
    13. {"name": "司马懿", "hometown": "魏国", "age": 45, "sex": "男"},
    14. {"name": "孙权", "hometown": "吴国", "age": 50, "sex": "男"},
    15. {"name": "貂蝉", "hometown": "未知", "age": 18, "sex": "女"},
    16. {"name": "西施", "hometown": "越国", "age": 18, "sex": "女"},
    17. {"name": "王昭君", "hometown": "西汉", "age": 18, "sex": "女"},
    18. {"name": "杨玉环", "hometown": "唐朝", "age": 18, "sex": "女"}
    19. ]
    20. # 使用insert_many插入多条数据
    21. x = new_collection.insert_many(mylist)
    •  插入指定 _id 的多个文档
    1. # 我们也可以自己指定 _id插入,以下实例我们在 new_collection1 集合中插入数据,_id 为我们指定的:
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection1 = new_database.new_collection1
    8. mylist = [
    9. {"_id": 1, "name": "小红"},
    10. {"_id": 2, "name": "小黑"},
    11. {"_id": 3, "name": "小白"},
    12. {"_id": 4, "name": "小蓝"},
    13. {"_id": 5, "name": "小黄"}
    14. ]
    15. # 使用insert_many插入多条数据
    16. x = new_collection1.insert_many(mylist)
    17. # 输出插入的所有文档对应的 _id 值
    18. print(x.inserted_ids) # 输出结果:[1, 2, 3, 4, 5]

    2.5 查看文档

    MongoDB 中使用了 find() 和 find_one 方法来查询集合中的数据,它类似于 SQL 中的 SELECT 语句。

    • 查询一条数据
    1. # 我们可以使用 find_one() 方法来查询集合中的一条数据
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection = new_database.new_collection
    8. x = new_collection.find_one()
    9. print(x)
    10. # 输出结果
    11. {'_id': ObjectId('6223413c927c6c0e82b9a4b0'), 'name': '张三', 'age': 18}
    •  查询集合中所有数据
    1. # find() 方法可以查询集合中的所有数据,类似 SQL 中的 SELECT * 操作。
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection = new_database.new_collection
    8. for x in new_collection.find():
    9. print(x)
    10. # 输出结果
    11. {'_id': ObjectId('6223413c927c6c0e82b9a4b0'), 'name': '张三', 'age': 18}
    12. {'_id': ObjectId('6223436592276f5f7b639bed'), 'name': '张飞', 'hometown': '蜀国', 'age': 30, 'sex': '男'}
    13. {'_id': ObjectId('6223436592276f5f7b639bee'), 'name': '关羽', 'hometown': '蜀国', 'age': 40, 'sex': '男'}
    14. {'_id': ObjectId('6223436592276f5f7b639bef'), 'name': '刘备', 'hometown': '蜀国', 'age': 50, 'sex': '男'}
    15. {'_id': ObjectId('6223436592276f5f7b639bf0'), 'name': '曹操', 'hometown': '魏国', 'age': 45, 'sex': '男'}
    16. {'_id': ObjectId('6223436592276f5f7b639bf1'), 'name': '司马懿', 'hometown': '魏国', 'age': 45, 'sex': '男'}
    17. {'_id': ObjectId('6223436592276f5f7b639bf2'), 'name': '孙权', 'hometown': '吴国', 'age': 50, 'sex': '男'}
    18. {'_id': ObjectId('6223436592276f5f7b639bf3'), 'name': '貂蝉', 'hometown': '未知', 'age': 18, 'sex': '女'}
    19. {'_id': ObjectId('6223436592276f5f7b639bf4'), 'name': '西施', 'hometown': '越国', 'age': 18, 'sex': '女'}
    20. {'_id': ObjectId('6223436592276f5f7b639bf5'), 'name': '王昭君', 'hometown': '西汉', 'age': 18, 'sex': '女'}
    21. {'_id': ObjectId('6223436592276f5f7b639bf6'), 'name': '杨玉环', 'hometown': '唐朝', 'age': 18, 'sex': '女'}
    • 查询指定字段的数据
    1. # 我们可以使用 find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。
    2. from pymongo import MongoClient
    3. client = MongoClient(host='127.0.0.1', port=27017, tz_aware=True)
    4. # 创建新的数据库
    5. new_database = client.new_database
    6. # 创建一个新的集合
    7. new_collection = new_database.new_collection
    8. for x in new_collection.find({}, {"_id": 0, "name": 1}):
    9. print(x)
    10. # 输出结果
    11. {'name': '张三'}
    12. {'name': '张飞'}
    13. {'name': '关羽'}
    14. {'name': '刘备'}
    15. {'name': '曹操'}
    16. {'name': '司马懿'}
    17. {'name': '孙权'}
    18. {'name': '貂蝉'}
    19. {'name': '西施'}
    20. {'name': '王昭君'}
    21. {'name': '杨玉环'}
    •  

    2.6 修改文档

    我们可以在 MongoDB 中使用 update_one() 方法修改文档中的记录。该方法第一个参数为查询的条件,第二个参数为要修改的字段。

    如果查找到的匹配数据多于一条,则只会修改第一条。

    2.7 删除数据

    2.8 排序

    学习遇到的问题

    暂无

    学习的收获

    了解到了python中对MongoDB数据库的操作。

    实操

    暂无

  • 相关阅读:
    2022年5月17日刷题
    无法打开软件,因为计算机中找不到MSVCP140.dll的解决方法
    Collagen胶原蛋白修饰亚油酸linoleic acid/甲磺酸酯Mesylate/磷酸三苯酯TPP
    Elasticsearch:自定义应用程序的日志记录 - Elastic Common Schema
    Servlet表单提交、前后端数据交换、页面跳转
    Android 11源码——预置无源码apk到Android系统(带so文件)
    云计算:开辟数字时代的无限可能
    20张图说清楚 IP 协议
    7、乐趣国学—趣谈“圣贤”
    PowerBI依据字段取一列从小到大的第三个值(没三个值取第二个,第二个没有取第一个)
  • 原文地址:https://blog.csdn.net/yxz8102/article/details/126239893