




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python操作MongoDB第七章新工科建设之路·数据科学与大数据系列Python实战之数据库应用和数据库获取1pymongo安装Python要连接MongoDB需要驱动,一般使用pymongo驱动来连接。pymongo是操作MongoDB的Python模块,是第三方模块,需要手动安装。安装pymongo模块比较简单,可以直接使用pip安装,安装命令如下:1.pymongo安装若提示找不到pip,可以使用pip3,根据本地环境中安装的pip情况使用即可。也可以使用如下方式进行安装:若提示找不到Python,可以使用Python3,根据本地环境中安装的Python使用即可。也可以指定安装的版本,如下所示:更新pymongo命令如下:执行安装命令后,可以通过指令模式输入如下命令,查看pymongo安装是否成功:1.pymongo安装若不报错,则安装成功。或者可以编写一个PY文件,在PY文件中写一个import语句,执行PY文件,若不报错,则表示安装成功。2Python连接MongoDB导入pymongo模块后,就可以用Python通过pymongo模块连接MongoDB了。连接MongoDB需要使用pymongo模块中的MongoClient对象,并且指定连接的URL地址和要连接或创建的数据库名。Python通过pymongo模块连接MongoDB的语法格式如下:2.Python连接MongoDB其中,“IP地址”指的是MongoDB安装的服务器地址,若是本地,则可以使用localhost:端口号是MongoDB对外提供的端口号,默认是27017.如本地连接MongoDB,编写代码如下(conn_exp_1.py):如果数据库设置了用户验证,那么需要在连接命令中加上验证信息。加上验证信息后的代码如下(conn_exp_2.py):通过pymongo模块中的MongoClient对象连接MongoDB,该连接会返回一个值,返回值中包含了所连接地址的所有数据库对象。如在第6章的本地MongoDB中创建了一个mongo_use数据库,查看本地MongoDB中的所有数据库,操作如下:2.Python连接MongoDB由打印结果可知,本地当前MongoDB服务器中有4个数据库,分别为admin、config、local和mongo_use.现需要通过编写Python代码打印MongoDB服务器中的所有数据库名。示例代码如下(conn_exp3.py):执行以上代码,得到如下打印结果:2.Python连接MongoDB由打印结果可知,示例代码将本地MongoDB服务器中的所有数据库名都打印了,得到的数据库个数和数据库名称与通过MongoDB命令得到的结果一致。3Python对MongoDB的基本操作与MongoDB中创建数据库一样,通过Python操作MongoDB创建数据库时,数据库只有在内容插入后才会创建,即数据库创建后,要创建集合(数据表)并插入一个文档(记录),数据库才会真正创建。继续第6章的操作,通过Python代码访问mongouse数据库。操作示例如下(create_db_exp_1.py):3.1创建数据库3.Python对MongoDB的基本操作执行该PY文件,得到输出结果如下:创建数据库时,若不确定某个数据库是否已经真正创建,则可以通过MongoClient对象中的list_database_names()方法取得所有数据库名。listdatabasenames()方法返回一个数据库名列表,可以从返回列表中查找对应数据库名是否已经存在。操作示例如下(create_db_exp2.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:
MongoDB使用数据库对象来创建集合,即创建集合之前,需要先获取数据库对象。使用Python代码创建集合的示例如下(create_col_exp_1.py):3.1创建集合3.Python对MongoDB的基本操作执行该PY文件,得到输出结果如下:在MongoDB中,集合只有在内容插入后才会创建,即创建集合(数据表)后要再插入一个文档(记录),集合才会真正创建。创建集合时,若不确定某个集合是否已经真正创建,则可以通过数据库对象中的stcollectionnames().方法取得所有集合名。listcollectionnames()方法返回一个集合名列表,可以从返回列表中查找对应集合名是否已经存在。操作示例如下(create_col_cxp2.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:由第6章可知,MongoDB中使用find()和findone()方法查询集合中的数据,类似SQL中的SELECT语句。pymongo也提供了findone(方法,用于从MongoDB中查询一条数据。如需从mongo_use数据库的python_class集合中查询一个文档,操作方法如下(query_exp_1.py):3.2查询文档3.Python对MongoDB的基本操作执行该PY文件,得到执行结果如下:该示例只能查询一个文档,若查询全部文档,需要使用pymongo提供的find()方法。如从python_class集合中查询所有文档,则操作方法如下(query_exp_2.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:pymongo提供的find()方法还可以查询指定字段的数据,将要返回的字段对应值设置为1即可。如从python_class集合中查询name和number字段,操作方法如下(query_exp_3.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:注意:除了id字段,不能在一个对象中同时指定0和1。也就是说,如果设置了一个字段为1,不能设置另一个字段为0:设置了一个字段为0,不能设置另一个字段为1。除了——id字段,其他字段要么都设置为1,要么都设置为0。如以下示例中,除了class_name字段,其他字段都返回值(query_exp_4.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:与其他查询有过滤功能一样,pymongo也提供了过滤查询,可以在find()中设置参数来过滤数据。如从python_class集合中查询name为“小明”的文档,操作如下(query_exp_2.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:查询的条件语句中还可以使用修饰符。如从python_class集合中读取number字段值大于1002的数据,修饰符条件为"Sgt":1002},示例如下(quey_exp_6.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:如果对查询结果设置返回指定条数的记录,那么可以使用Iimit()方法,该方法只接受一个数字参数。以下示例用于从python_class集合中读取2条记录(query_exp_7.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:插入文档使用insert()方法。在pymongo中提供了insertone()方法向MongoDB中插入一个文档,该方法的第一个参数是字典key-value对。如向stuinfo集合中插入一个文档,示例如下(insert_exp_1.py):3.4插入文档3.Python对MongoDB的基本操作执行该PY文件,得到执行结果如下:由打印结果可知,文档已成功插入stuinfo集合。这里不要忘记,若集合不存在,会创建对应的集合。insertone0方法返回InsertOneResult对象,该对象包含insertedid属性,它是插入文档的id值。如上面示例中需要查看插入文档的id值,可以把print(result)修改如下:3.Python对MongoDB的基本操作若插入多个文档,则需要使用insertmany(方法,其第一个参数是字典列表。如下示例用于向stuinfo集合中插入多个文档,并打印所有id值(insert_exp_2.py):3.Python对MongoDB的基本操作执行该PY文件,得到执行结果如下。所有文档_id值如下:stu_info集合中的所有文档如下:由打印结果可知,多个文档已经成功插入集合中。同时可知,一个集合中插入文档的字段名可以各不相同,字段个数也可以不同,这也是前面提到的NoSQL的便捷之处,不需要每个文档的字段名都相同,也不需要有相同的字段个数。在前面的操作示例可知,d字段值比较长,是否可以将d设置成关系型数据库那样的,以数字形式展示呢?pymongo可以自己指定_id的插入值。如在集合中插入指定id的文档,示例如下(insert_exp_3.py):3.Python对MongoDB的基本操作3.Python对MongoDB的基本操作执行该PY文件,得到执行结果如下。所有文档_id值如下:stu_info集合中的所有文档如下:在MongoDB中,更改文档使用的是update(方法。在pymongo模块中使用update_one()方法修改文档中的记录,其第一个参数为查询的条件,第二个参数为要修改的字段。如将mongo_use数据库中python_class集合的number为1004的文档的name更改为“小李”,操作如下(update_exp_1.py):3.5更改文档3.Python对MongoDB的基本操作3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:3.Python对MongoDB的基本操作由打印结果可知,文档中number为1004的文档的name由“小张”更改为了“小李”。该示例代码做了代码的封装,将代码段抽象成了函数。update_one()方法只能修改匹配到的第一条记录,如果修改所有匹配到的记录,那么可以使用update_many()。如将python_class集合的class_name为“Python快乐学习班”的文档更改为“Python进阶班”,则操作如下(update_exp_2.py):3.Python对MongoDB的基本操作3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:由结果可知,文档中class_name为“Python快乐学习班”的文档全部更改为了“Python进阶班”。在MongoDB中使用sort()方法对数据进行排序。pymongo也是使用sort()方法对数据进行排序。sort()方法可以指定升序或降序排序。其第一个参数为要排序的字段,第二个字段指定排序规则,1为升序,-1为降序,默认为升序。对mongo_use数据库pythonclass集合中所有文档根据number字段进行升序、降序排序,操作如下(sort_cxp_1.py):3.6文档排序3.Python对MongoDB的基本操作3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:3.Python对MongoDB的基本操作除了单个字段的排序,也可以对多个字段进行排序;排序方式除了可以用数字1或-1,也可以使用pymongo.ASCENDING(I)或pymongo.DESCENDING(-lI).对python_class集合中所有文档根据name和number字段进行降序排序,操作如下(sort_exp_2.py):3.Python对MongoDB的基本操作执行该PY文件,执行结果如下:
pymongo使用delete_one()方法删除一个文档,其第一个参数为查询对象,指定要删除哪些数据。以下示例删除stu_info集合中name字段值为“小王”的文档(delete_exp_1.py):3.7删除文档3.Python对MongoDB的基本操作3.Pytho
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年黑龙江省五常市辅警招聘考试试题题库及一套答案详解
- 2025年河北省定州市辅警招聘考试试题题库附答案详解(基础题)
- AI大模型赋能智慧教育数字化转型建设方案
- 宪法竞赛试题及答案
- 物理预赛试题及答案
- 湖北省云学联盟2024-2025学年高一下学期5月月考数学试卷(含答案)
- 2025年中考语文第一次模拟卷(无答案)
- 2025标准版长期劳动合同样本
- 2025风力发电站EPC总承包合同
- 完善工程设计企业的项目管理流程
- 2025广西桂盛金融信息科技服务有限公司专业技术人员常态化招聘笔试参考题库附带答案详解
- 工业自动化设备维护与保养手册
- 红色经典图书出版行业深度调研及发展战略咨询报告
- 河南省五年中考(2020-2024)化学真题试卷含答案
- 音乐教学培训创业计划
- “岗课赛证”融合下的高职软件技术专业课程体系构建探索
- (一模)2025年广东省高三高考模拟测试一模化学试卷(含官方答案)
- 2024年河南省开封市小学五年级上学期期末英语试卷及答案指导
- 遥测技术优化研究-深度研究
- 化学能与电能(9大易错点)-2025年高考化学复习易错题(含解析)
- 热力站电气知识培训课件
评论
0/150
提交评论