更新时间:2023年01月29日16时14分 来源:传智教育 浏览次数:
Python是目前比较流行的程序设计语言,特别是在人工智能和大数据分析处理上,市场空间是比较大的。写此同时,MongDB是比较流行的NoSQL数据库的解决方案,两者结合使用的场景非常多。
要想在Python项目中使用MongoDB数据库,需要在Python标准库的基础上添加对MongoDB的支持。截止到目前,常用的开发MongoDB的包为PyMongo。下面将针对PyMongo的相关内容进行详细介绍。
PyMongo的概念
PyMongo是用于MongoDB的开发工具,是Python 操作MongoDB数据库的推荐方式。
PyMongo中主要提供了如下类与MongoDB数据库进行交互:
◆MongoClient类:用于与MongoDB服务器建立连接。
◆DataBase类:表示MongoDB中的数据库。
◆Collection 类:表示MongoDB中的集合。
◆Cursor 类:表示查询方法返回的结果,用于对多行数据进行遍历。
PyMongo库的基本使用流程如下:
(1)创建一个MongoClient类的对象,与MongDB服务器建立连接。
(2)通过MongoClient对象访问数据库(DataBase 对象)。
(3)使用上个步骤的数据库创建一个集合Colletio对象)。
(4)调用集合中提供的方法在集合中插人、删除、修改和查询文档。
PyMongo的基本操作
由于PyMongo是第三方库,所以需要安装之后才能在Python中使用。在Windows系统下安装可使用pip命令:
安装完成之后,就可以使用PyMongo操作MongoDB 数据库。首先要在项目中导人PyMongo库的全部内容或者使用到的类,通常情况下采用如下方式引人:
from pymongo import *
导人PyMongo库之后,就可以使用该库进行与数据库相关的操作。下面就针对PyMongo库的基本操作一一进行介绍。
1.创建连接
开始使用PyMongo的第一步 是创建一个 MongoClient类的对象,用于连接MongoDB服务器。
可以通过MongoClient类的构造方法进行创建。该方法语法格式如下:
上述方法中包含的参数含义如下:
(1)host参数:表示主机名或IP地址。
(2)port参数:表示连接的端口号。
(3)document_class参数:从此客户端查询返回的文档默认使用此类。
(4)tz_aware参数:如果为True,则此MongoClient作为文档中的值返回的datetime实例,将会被时区所识别。
(5)connect参数:若为True(默认),则立即开始在后台连接到MongoDB,否则连接到第一个操作。
建立连接的示例如下:
client=MongoClient()
上述示例中没有传人任何参数,将建立连接到默认的主机(localhost)和端口(27017 )。
除此之外,可以显式地指定主机和使用端口。例如:
client=MongoClient ('localhost', 27017)
也可以使用MongoDB的URL路径形式传人参数。例如:
client=MongoClient('mongodb://localhost:27017')
2.访问数据库
只要已经建立了与Mongo服务器的连接,就可以直接访问任何数据库。访问数据库的方式比较简单,可以将其当作属性一样,使用点语法进行访问。例如:
db=client.pymongo_test
此外,还可以使用字典的形式进行访问。例如:
db=client['pymongo_test']
3.创建集合
创建集合的方式与创建数据库类似,通过数据库使用点语法的形式进行访问。其语法格式
如下:
例如,访问db数据库中的student集合,示例代码如下:
column=db.student
4.插入文档
往集合中插人文档的方法主要有如下两个:
(1) insert_one()方法:插人一条文档对象。
(2) insert_many()方法:插人列表形式的多条文档对象。
插人一条文档的示例如下:
try: client=MongoClient(host='localhost', port=27017) db=client.mongo_insert collection=db.student result=collection.insert_one({'name':'zhangsan', 'age':20}) print(result) except Exception as error: print(error)
输出结果为:
<pymongo.results.InsertOneResult object at 0x0000000034CFF88>
插人多条文档的示例如下:
result=column.insert_many([{'name':'zhangsan', 'age': 20}, {'name': 'lisi', 'age': 21}, {'name': 'wangwu', 'age': 22}])
5.查询文档
用于查找文档的方法主要有如下几个:
(1)find one()方法:查找-条文档对象。
(2)find many0方法:查找多条文档对象。
(3)find0方法:查找所有文档对象。
下面以find0方法为例,介绍如何查询集合中的所有文档。具体如下:
try: client=MongoClient() db=client.mongo_insert collection=db.student result=collection.find({'age': 20}) print(result) for doc in result: print(doc) except Exception as error: print(error)
输出结果为:
<pymongo.cursor.Cursor object at 0x00000000038F89B0> {'_id': objectId('59f420f386d7080f1824d8c1'), 'name':'zhangsan', 'age': 20}
6.更新文档
用于更新文档的方法主要有如下几个:
(1) update_one()方法:更新一条文档对象。
(2) update_many()方法:更新多条文档对象。
更新一条文档的示例如下:
collection.update_one({'age': 22},{'$set': {'name': 'zhaoliu'}})
更新多条文档的示例如下:
collection.update_many({'age': 22}, {'$set': {'name': 'zhaoliu'}})
7.删除文档
用于删除文档的方法包括如下几个:
(1) delele_one()方法:删除一条文档对象。
(2) delete_many()方法:删除所有记录。
下面以delete_many()方法进行举例,介绍如何从集合中删除所有的文档。具体代码如下:
collection.delete_many({})
通过对上述操作的学习,熟练地掌握了数据库的增加、删除、查找、修改等基本操作之后,再去学习和提升就不会再有很大的障碍。实际上,使用PyMongo库操作数据库是非常简单的,以后如果遇到更加复杂的需求,在网络上查一下官 方文档或者技术博客,应该都能顺利解决。