自学Python第二十天- MongoDB 数据库

  • Python 和 Mongo 的交互
    • 创建/获取数据库
    • 创建/获取集合(表)
    • 增加数据
    • 删除数据
    • 更改数据
    • 查找数据

Python 和 Mongo 的交互

python 和 mongo 交互需要 pymongo 模块,使用 pip install pymongo 安装,使用 import pymongo 引入。

创建/获取数据库

import pymongo# 连接数据库
client = pymongo.MongoClient(host='127.0.0.1',       # 主机port=27017,         # 端口号username='用户名',   # 登录数据库的用户名password='密码',        # 登录数据库用户的密码authSource='admin'          # 进行认证的数据库
)
# 创建/获取数据库 movie ,两者等价
db = client.movie
db = client['movie']

创建/获取集合(表)

# 创建/获取集合(表),两者等价
movie = db.info
movie = db['info']

增加数据

使用 insert_one() 和 insert_many() 两个方法增加数据

# 增加一条数据
data = {'name': '流浪地球', 'actor': '吴京', 'level': 8}
movie.insert_one(data)
# 增加多条数据
data1 = {'name': '龙女孩', 'actor': '普加·巴哈卢卡', 'level': 2}
data2 = {'name': '狙击手', 'actor': '张译', 'level': 7}
movie.insert_many([data1, data2])

删除数据

使用 delete_one() 和 delete_many() 来删除数据,参数是要删除的数据或查询

# 删除目标数据
data_wrong = {'name': '错误数据', 'actor': 'nobody', 'level': 1000}
movie.insert_one(data_wrong)
res = movie.delete_one(data_wrong)
print(f'删除了{res.deleted_count}条数据')# 按照查询结果删除数据
data_wrong = {'name': '错误数据', 'actor': 'nobody', 'level': 1000}
movie.insert_one(data_wrong)
result = movie.find_one({'name': '错误数据'})
res = movie.delete_one(result)
# 或使用 res = movie.delete_one({'name': '错误数据'})
print(f'删除了{res.deleted_count}条数据')# 查询并删除一条数据,返回结果是查询到的数据
data_wrong = {'name': '错误数据', 'actor': 'nobody', 'level': 1000}
movie.insert_one(data_wrong)
res = movie.find_one_and_delete({'name': '错误数据'})
print(f'删除了{res}数据')# 删除多条数据
data_wrong1 = {'name': '错误数据1', 'level': 1000}
data_wrong2 = {'name': '错误数据2', 'level': 999}
data_wrong3 = {'name': '错误数据3', 'level': 960}
data_wrong4 = {'name': '错误数据4', 'level': 944}
movie.insert_many([data_wrong1, data_wrong2, data_wrong3, data_wrong4])
res = movie.delete_many({'level': {'$gt': 900}})
print(f'删除了{res.deleted_count}条数据')

更改数据

更改数据需要先找到数据,然后使用 update() 和 update_one() 更改数据

# 更改一条数据
data = {'name': '长津湖之水门桥', 'actro': '吴京', 'level': 1}
movie.insert_one(data)
condition = {'name': '长津湖之水门桥'}        # 查询条件
result = movie.update_one(condition, {'$set': {'level': 7}})
print(f'匹配到了{result.matched_count}条数据,修改了{result.modified_count}条数据')# 查询并更改一条数据
data = {'name': '中国机长', 'actor': '张涵予', 'level': 1}
movie.insert_one(data)
condition = {'name': '中国机长'}
res = movie.find_one_and_update(condition, {'$set':{'level': 8}})
print(f'更改了{res}这条数据')# 更改多条数据
condition = {'level': 6}
res = movie.update_many(condition, {'$inc': {'level': -2}})  # $inc 用于增加值,即所有符合条件的 level 的值增加 -2
print(f'匹配到了{res.matched_count}条数据,修改了{res.modified_count}条数据')# 替换一条数据,包括键
data = {'name': '神奇动物:邓布利多之谜', 'actro': '裘德·洛', 'level': 4}
movie.insert_one(data)
movie.replace_one({'actro': '裘德·洛'}, {'name': '神奇动物:邓布利多之谜', 'actor': '埃迪·雷德梅恩', 'level': 3})     # 需注意的是,替换是全文档替换,且无法使用 $set 保持结构# 查询并替换,类似于替换,只是有返回值
data = {'name': '奇异博士2:疯狂多元宇宙', 'actro': '本尼迪特·王', 'level': 6}
movie.insert_one(data)
res = movie.find_one_and_replace({'actro': '本尼迪特·王'}, {'name': '奇异博士2:疯狂多元宇宙', 'actor': '本尼迪克特·康伯巴奇', 'level': 6})  # 需注意的是,替换是全文档替换,且无法使用 $set 保持结构
print(f'替换了数据{res}')

查找数据

查找数据大概和 mongo 数据库查询类似,需要注意的是 key 必须加引号。

  • find() 返回一个生成器对象
  • find_one() 返回一条数据
result = movie.find_one()
result = movie.find_one({'name': '飞驰人生'})
result = movie.find_one({'_id': ObjectId('2318d38431c4478a37f9e010')})
result = movie.find_one({'level': {'$gt':1}})
results = movie.find()

另外 python 操作 mongo 时还支持一些功能操作,例如

# $text 文本查询
results = movie.find({'$text': {'$search': 'Mike'}}) # text 类型的属性中包含 Mike 字符串
# $where 高级条件查询
results = movie.find({'$where': 'obj.fans_count == obj.follows_count'})      # 自身的 fans 字段值等于 follows 字段的值
  • sort() 排序,和 mongo 不同,不能用字典而是传参的形式。
results = movie.find().sort('name',1)

自学Python第二十天- MongoDB 库相关推荐

  1. 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2

    孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...

  2. 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库...

    孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...

  3. 自学Python第二十三天- pillow 库,图形处理及绘画

    自学Python第二十三天- pillow 库,图形处理及绘画 pillow 的安装及引用 图形基础 Image 类 创建图片 加载图片 Image 图形对象的常用方法和属性 resize 方法 co ...

  4. 用python turtle画棒棒糖源代码_【自学Python】DAY 4 绘画大师——turtle库(超详细)

    自学Python DAY 4 目录turtle库介绍 turtle库使用 turtle的实例(源代码分享) 库我之前发的百科已经详细的介绍了,不知道的点击下方链接查看!博文-宇辰:[Python百科] ...

  5. 我在自学python_我要自学python 自动化-request库

    1.  postman和jmeter上手容易,但是不够灵活.所以使用python来进行接口测试. 2.  python基础的http库有 urllib,httplib2 等,推荐使用request库来 ...

  6. 零基础该如何系统地自学Python编程?五个阶段带你从小白到大佬

    对于零基础学习或是已经学完基础不知道下一步该干什么的朋友,可以看看这篇缓解迷茫.今天分享下如何系统地自学Python规划目标,有一个学习目标在去行动. 有了目标,怎么行动呢?建议采用视频+书籍的方式进 ...

  7. 文科生自学python要多久_怎么自学python,大概要多久?

    都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...

  8. python自学需要多久-怎么自学python,大概要多久?

    都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...

  9. 没有统计学基础可以学python-如何系统地自学 Python?

    ↑↑↑↑↑↑ 首先得分析什么叫系统地学习,所谓系统地学习,是指通过学习 来构建自己的一套知识体系.关于知识体系,在笔者看来,其主要包含以下四个方面:(1) 基础性知识 (2) 知识的应用 (3) 知识 ...

  10. 自学python到什么程度就可以工作-Python学到什么程度可以面试工作?

    先看:Python工程师在企业里面的定位是什么? /> 四个重要的定位:验证算法.快速开发.测试运维.数据分析. 1.验证算法:就是对我们公司一些常见设计算法或者公式的验证,公式代码化. 2.快 ...

最新文章

  1. 020_泛型变量的类型限定
  2. Python中__str__和__repr__
  3. 3g无线图传点到点模式与服务器模式比较,RTK网络模式分类及网络制式的选择
  4. Cesium原理篇:6 Render模块(6: Instance实例化)
  5. ADempiere 360LTS 地址(Address)的中国格式定制
  6. 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
  7. 什么是Apache Spark?这篇文章带你从零基础学起
  8. KindleConverter:Word批量转换为6寸PDF
  9. Leetcode每日一题:690.employee-importance(员工的重要性)
  10. 指针与数组的关系---初始化
  11. 升级 Node.js 版本遇到的 co 和 pm2 问题解析
  12. C语言 fprintf 函数 - C语言零基础入门教程
  13. PS入门(1-7) HSB色彩模式
  14. 【MySQL - 3】数据库可视化工具SQLyog的安装使用及DML操作大全(CUD)
  15. 期刊论文发表的重复率要求
  16. mysql gprs 程序_基于STM32控制的GPS定位与GPRS发送数据(程序源码)
  17. 微信qq邮箱提醒 服务器繁忙,微信设置密码失败,QQ无法绑定,邮箱服务器繁忙...
  18. QUICK PCB抄板教程(无网络编号)
  19. FreeRTOS-ARM架构深入理解
  20. 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2

热门文章

  1. curl命令及其API 的使用
  2. 阿里数据中台维度建模规范、维度模型设计及模型实施方法论
  3. linux下dns测试命令
  4. 智能家居为什么跑不出“独角兽”?
  5. Android分享wifi给电脑,安卓手机怎么通过USB共享网络给mac电脑
  6. 分析方法--FMEA,6sigma,脑力激荡法
  7. RPC框架pigeon源码分析
  8. 用js实现在文本框中检测字数和限制字数功能
  9. 新站seo如何进行站内优化
  10. Python读写xlsx文件