Python操作MongoDB的教程分享

 更新时间:2023年08月28日 15:54:04   作者:Commas.KM  
MongoDB 是一个流行的 NoSQL 数据库,以其半结构化的文档存储方式而闻名,本文将带大家逐步了解如何使用Python与MongoDB进行交互,从连接到基本操作,快跟随小编一起学习一下吧

一、前言

MongoDB 是一个流行的 NoSQL 数据库,以其半结构化文档存储方式而闻名。Python开发人员经常使用MongoDB来存储和处理各种类型的数据。本文将带你逐步了解如何使用Python与MongoDB进行交互,从连接到基本操作。

二、安装MongoDB驱动程序

安装了MongoDB的Python驱动程序 pymongo

pip install pymongo

三、连接到MongoDB数据库

首先,确保MongoDB服务器正在运行。

接着,我们再连接到MongoDB数据库。使用 pymongo 库的 MongoClient 类来建立连接:

try:
    client = MongoClient('mongodb://localhost:27017/')
    print("数据库连接成功")
except Exception as e:
    print("数据库连接失败,原因:", e)

可以根据你的服务器配置修改连接字符串,如下所示:

# 配置连接信息
host = 'localhost'
port = 27017
username = '<YourUsername>'
password = '<YourPassword>'
auth_source = 'admin'  # 认证数据库,默认是'admin',可以根据实际情况修改
# 尝试连接到MongoDB
try:
    client = MongoClient(host, port,
                         username=username,
                         password=password,
                         authSource=auth_source)
    print("数据库连接成功")
except Exception as e:
    print("数据库连接失败,原因:", e)

四、选择数据库和集合

在MongoDB中,数据存储在数据库中,每个数据库可以包含多个集合(类似于表)。我们将创建一个名为 mydatabase 的数据库和一个名为 customers 的集合:

# 创建数据库(如果不存在)
mydb = client["mydatabase"]
print(mydb)
# 创建集合
mycol = mydb["customers"]
print(mycol)

输出结果:

Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mydatabase')
Collection(Database(MongoClient(host=['localhost:27017'], document_class=dict, tz_aware=False, connect=True), 'mydatabase'), 'customers')

五、插入数据

我们可以使用 insert_one() insert_many() 方法向集合中插入数据:

# 插入一条数据
data = {
    "name": "Commas",
    "email": "commas@example.com"
}
insert_result = mycol.insert_one(data)
print("Inserted ID:", insert_result.inserted_id)
# 插入多条数据
data_list = [    {"name": "CommasKM", "email": "commaskm@example.com"},
    {"name": "Kang", "email": "kang@example.com"},
    {"name": "Robert", "email": "Robert@example.com"}
]
insert_many_result = mycol.insert_many(data_list)
print("Inserted IDs:", insert_many_result.inserted_ids)

输出结果:

Inserted ID: 64eb1f52561652f6ae007e52
Inserted IDs: [ObjectId('64eb1f52561652f6ae007e53'), ObjectId('64eb1f52561652f6ae007e54'), ObjectId('64eb1f52561652f6ae007e55')]

六、查询数据

查询是从集合中检索数据的关键操作,使用 find() 方法可以查询集合中的数据。以下是两种常见的查询方法:

查询所有文档:

# 查询所有文档
all_documents = mycol.find()
print(all_documents)
for document in all_documents:
    print(document)

输出结果:

<pymongo.cursor.Cursor object at 0x0000025299BEF910>
{'_id': ObjectId('64eb20d6bdc391e33532bda9'), 'name': 'Commas', 'email': 'commas@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdaa'), 'name': 'CommasKM', 'email': 'commaskm@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdab'), 'name': 'Kang', 'email': 'kang@example.com'}
{'_id': ObjectId('64eb20d6bdc391e33532bdac'), 'name': 'Robert', 'email': 'Robert@example.com'}

查询满足条件的文档:

# 查询满足条件的文档
specific_documents = mycol.find({"name": "Commas"})
print(specific_documents)
for document in specific_documents:
    print(document)

输出结果:

<pymongo.cursor.Cursor object at 0x00000252974F16D0>
{'_id': ObjectId('64eb20d6bdc391e33532bda9'), 'name': 'Commas', 'email': 'commas@example.com'}

七、更新数据

要更新数据,可以使用 update_one() update_many() 方法:

# 更新数据
update_query = {"name": "John"}
new_values = {"$set": {"email": "john.new@example.com"}}
mycol.update_one(update_query, new_values)

八、删除数据

要删除数据,可以使用 delete_one() delete_many() 方法:

# 删除数据
delete_query = {"name": "Alice"}
mycol.delete_one(delete_query)

九、断开连接

在操作完成后,别忘了断开与数据库的连接:

client.close()

到此这篇关于Python操作MongoDB的教程分享的文章就介绍到这了,更多相关Python操作MongoDB内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python从使用线程到使用async/await的深入讲解

    Python从使用线程到使用async/await的深入讲解

    Python在3.5版本中引入了关于协程的语法糖async和await,所以下面这篇文章主要给大家介绍了关于Python从使用线程到使用async/await的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-09-09
  • Python 十个字典用法使用技巧归纳

    Python 十个字典用法使用技巧归纳

    今天小编帮大家简单介绍下Python的一种数据结构: 字典,字典是一种可变容器模型,且可存储任意类型对象,它用于存放具有映射关系的数据,这里介绍归纳十个字典的用法技巧,需要的朋友可以参考下
    2022-01-01
  • Python中ValueError报错的原因和解决办法

    Python中ValueError报错的原因和解决办法

    在Python编程中,ValueError是一种非常常见的异常类型,它通常发生在函数接收到一个有效类型但不适合该函数操作的值时,本文将深入探讨ValueError的报错原因、提供详细的解决办法,并通过丰富的代码示例来加深理解,需要的朋友可以参考下
    2024-07-07
  • 关于python安装第三方库的问题与解决方案

    关于python安装第三方库的问题与解决方案

    Python开发中经常遇到第三方库安装困难的问题,速度慢可以使用国内镜像如清华镜像加速,若遇到wheel错误,可以手动下载whl文件进行安装,对于找不到的包,可以尝试在Python的官方包发布网站上进行搜索和下载,本文提供了具体的解决方案和操作步骤
    2024-10-10
  • python实战之实现excel读取、统计、写入的示例讲解

    python实战之实现excel读取、统计、写入的示例讲解

    下面小编就为大家分享一篇python实战之实现excel读取、统计、写入的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 使用Python操作FTP实现上传和下载的方法

    使用Python操作FTP实现上传和下载的方法

    今天小编就为大家分享一篇关于使用Python操作FTP实现上传和下载的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • Python 身份验证和授权库使用详解(python jwt库)

    Python 身份验证和授权库使用详解(python jwt库)

    python_jwt是一个Python库,用于生成、解析和验证JSON Web Tokens(JWT),它完全符合JWT标准规范(RFC 7519),并提供了简单而强大的API,使得用户可以轻松地在Python应用中实现JWT功能,通过本文的介绍,深入探讨了python_jwt库的功能特性、使用方法以及应用场景
    2021-01-01
  • python 基本数据类型占用内存空间大小的实例

    python 基本数据类型占用内存空间大小的实例

    今天小编就为大家分享一篇python 基本数据类型占用内存空间大小的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python中的魔术方法__new__详解

    Python中的魔术方法__new__详解

    这篇文章主要介绍了Python中的魔术方法__new__的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • python+Matplotlib 绘制带置信区间的折线图

    python+Matplotlib 绘制带置信区间的折线图

    这篇文章主要介绍了python绘制带置信区间的折线图,在本文中,我们将使用 numpy 模块生成随机数据,并使用 matplotlib 库实现数据可视化,需要的朋友可以参考下
    2023-05-05

最新评论