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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 教你用pyecharts绘制各种图表案例(效果+代码)

    教你用pyecharts绘制各种图表案例(效果+代码)

    说到pyecharts,相信很多人不会陌生,一个优秀的python可视化包,下面这篇文章主要给大家介绍了关于如何用pyecharts绘制各种图表案例的相关资料,需要的朋友可以参考下
    2022-06-06
  • 详解Python中的文件操作

    详解Python中的文件操作

    在日常生活中,文件操作主要包括打开、关闭、读、写等操作,这篇文章主要为大家详细介绍了Python中这些文件操作的实现,需要的可以了解下
    2023-07-07
  • Python 通过colorama 设置控制台、命令行输出彩色文字

    Python 通过colorama 设置控制台、命令行输出彩色文字

    这篇文章主要介绍了Python 通过colorama 设置控制台、命令行输出彩色文字的相关资料,需要的朋友可以参考下
    2023-09-09
  • python按列索引提取文件夹内所有excel指定列汇总(示例代码)

    python按列索引提取文件夹内所有excel指定列汇总(示例代码)

    这篇文章主要介绍了python按列索引提取文件夹内所有excel指定列汇总,本文通过多种场景分析结合示例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • 基于Python OpenCV实现图像的覆盖

    基于Python OpenCV实现图像的覆盖

    本文将基于Python、OpenCV和Numpy实现图像的覆盖,即小图像覆盖在大图像上。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-02-02
  • Python将字符串转换为datetime对象的五种方法

    Python将字符串转换为datetime对象的五种方法

    在Python编程中,我们经常会遇到需要将字符串形式的日期和时间转换为datetime对象的情况,例如,从文件、数据库或网络接口中获取的数据通常是以字符串形式存在的,使用datetime对象会更加方便,所以本文给大家总结Python将字符串转换为datetime对象的五种方法
    2025-07-07
  • 优化Python代码的实用技巧分享

    优化Python代码的实用技巧分享

    有时候,写代码就像是一场马拉松,尽管已经尽全力跑了很久,但依然觉得离目标遥不可及,今天就让我们一起来探讨一下,如何让Python代码跑得更快,给它加速,本文将从几个实用的角度出发,带你了解如何优化Python代码,提升其执行效率,需要的朋友可以参考下
    2025-08-08
  • python设置环境变量的几种方法总结

    python设置环境变量的几种方法总结

    这篇文章主要介绍了在Python中设置环境变量可以通过多种方式实现,包括使用os.environ、os.putenv、setuptools以及在操作系统级别设置,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-01-01
  • Python的SQLalchemy模块连接与操作MySQL的基础示例

    Python的SQLalchemy模块连接与操作MySQL的基础示例

    SQLalchemy是Python世界中驱动MySQL的一款高人气模块,这里我们从入门开始来看一下Python的SQLalchemy模块连接与操作MySQL的基础示例:
    2016-07-07
  • 详解python3类型注释annotations实用案例

    详解python3类型注释annotations实用案例

    这篇文章主要介绍了详解python3类型注释annotations实用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论