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

相关文章

  • tensorflow实现图像的裁剪和填充方法

    tensorflow实现图像的裁剪和填充方法

    今天小编就为大家分享一篇tensorflow实现图像的裁剪和填充方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • 利用Python校准本地时间的方法教程

    利用Python校准本地时间的方法教程

    这篇文章主要给大家介绍了关于如何利用Python校准本地时间的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • python分数实例用法

    python分数实例用法

    在本篇文章里小编给大家整理的是一篇关于python分数实例用法的相关内容,有兴趣的朋友们可以学习下。
    2021-04-04
  • 简单实现Python爬取网络图片

    简单实现Python爬取网络图片

    这篇文章主要教大家如何简单实现Python爬取网络图片,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • Python使用matplotlib给柱状图添加数据标签bar_label()

    Python使用matplotlib给柱状图添加数据标签bar_label()

    这篇文章主要介绍了Python使用matplotlib给柱状图添加数据标签bar_label(),记录如何用使用matplotlib给柱状图添加数据标签,是以matplotlib.pyplot.bar_label()为例,需要的朋友可以参考一下
    2022-03-03
  • python 逆向爬虫正确调用 JAR 加密逻辑

    python 逆向爬虫正确调用 JAR 加密逻辑

    这篇文章主要介绍了python 逆向爬虫正确调用 JAR 加密逻辑,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2021-01-01
  • Python编程中的反模式实例分析

    Python编程中的反模式实例分析

    这篇文章主要介绍了Python编程中的反模式,详细讲述了反模式的害处并以实例形式具体分析了容易造成的易错点,对于Python学习来说具有一定的参考借鉴价值,需要的朋友可以参考下
    2014-12-12
  • 基于PyQT5制作一个桌面摸鱼工具

    基于PyQT5制作一个桌面摸鱼工具

    这篇文章主要介绍了如何利用PyQT5制作一个桌面摸鱼工具,利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度,快来跟随小编一起动手试一试吧
    2022-02-02
  • python如何使用python-docx调整Word文档样式

    python如何使用python-docx调整Word文档样式

    本文介绍了如何修改文字字体样式、对齐样式、行间距以及段前段后间距,并通过效果展示给出参考,适用于需要进行文档编辑的读者
    2024-09-09
  • Python面向对象原理与基础语法详解

    Python面向对象原理与基础语法详解

    这篇文章主要介绍了Pyhton面向对象原理与基础语法,结合实例形式分析了Python面向对象程序设计中的基本原理、概念、语法与相关使用技巧,需要的朋友可以参考下
    2020-01-01

最新评论