自学Python第二十天- MongoDB 库
自学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 库相关推荐
- 孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2
孤荷凌寒自学python第六十三天学习mongoDB的基本操作并进行简单封装2 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第九天. 今天继续学习mongoDB的简单操作, ...
- 孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库...
孤荷凌寒自学python第五十六天通过compass客户端和mongodb shell 命令来连接远端MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第二 ...
- 自学Python第二十三天- pillow 库,图形处理及绘画
自学Python第二十三天- pillow 库,图形处理及绘画 pillow 的安装及引用 图形基础 Image 类 创建图片 加载图片 Image 图形对象的常用方法和属性 resize 方法 co ...
- 用python turtle画棒棒糖源代码_【自学Python】DAY 4 绘画大师——turtle库(超详细)
自学Python DAY 4 目录turtle库介绍 turtle库使用 turtle的实例(源代码分享) 库我之前发的百科已经详细的介绍了,不知道的点击下方链接查看!博文-宇辰:[Python百科] ...
- 我在自学python_我要自学python 自动化-request库
1. postman和jmeter上手容易,但是不够灵活.所以使用python来进行接口测试. 2. python基础的http库有 urllib,httplib2 等,推荐使用request库来 ...
- 零基础该如何系统地自学Python编程?五个阶段带你从小白到大佬
对于零基础学习或是已经学完基础不知道下一步该干什么的朋友,可以看看这篇缓解迷茫.今天分享下如何系统地自学Python规划目标,有一个学习目标在去行动. 有了目标,怎么行动呢?建议采用视频+书籍的方式进 ...
- 文科生自学python要多久_怎么自学python,大概要多久?
都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...
- python自学需要多久-怎么自学python,大概要多久?
都让开!本人文科生,自学Python 2年半,作为一个曾经完全0基础,啥都不懂纯靠自学学会python的文科生,有一些不成熟的小建议可以分享一下. 首先不要觉着编程难,只要你认识26个英文字母,有一点 ...
- 没有统计学基础可以学python-如何系统地自学 Python?
↑↑↑↑↑↑ 首先得分析什么叫系统地学习,所谓系统地学习,是指通过学习 来构建自己的一套知识体系.关于知识体系,在笔者看来,其主要包含以下四个方面:(1) 基础性知识 (2) 知识的应用 (3) 知识 ...
- 自学python到什么程度就可以工作-Python学到什么程度可以面试工作?
先看:Python工程师在企业里面的定位是什么? /> 四个重要的定位:验证算法.快速开发.测试运维.数据分析. 1.验证算法:就是对我们公司一些常见设计算法或者公式的验证,公式代码化. 2.快 ...
最新文章
- 020_泛型变量的类型限定
- Python中__str__和__repr__
- 3g无线图传点到点模式与服务器模式比较,RTK网络模式分类及网络制式的选择
- Cesium原理篇:6 Render模块(6: Instance实例化)
- ADempiere 360LTS 地址(Address)的中国格式定制
- 2014 网选 广州赛区 hdu 5023 A Corrupt Mayor's Performance Art
- 什么是Apache Spark?这篇文章带你从零基础学起
- KindleConverter:Word批量转换为6寸PDF
- Leetcode每日一题:690.employee-importance(员工的重要性)
- 指针与数组的关系---初始化
- 升级 Node.js 版本遇到的 co 和 pm2 问题解析
- C语言 fprintf 函数 - C语言零基础入门教程
- PS入门(1-7) HSB色彩模式
- 【MySQL - 3】数据库可视化工具SQLyog的安装使用及DML操作大全(CUD)
- 期刊论文发表的重复率要求
- mysql gprs 程序_基于STM32控制的GPS定位与GPRS发送数据(程序源码)
- 微信qq邮箱提醒 服务器繁忙,微信设置密码失败,QQ无法绑定,邮箱服务器繁忙...
- QUICK PCB抄板教程(无网络编号)
- FreeRTOS-ARM架构深入理解
- 软件开发工期估算系列(5)——規模見積もりの王様「LOC見積もり」 ~見積もりの基本技法 その2