迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MongoDB >

使用 Python 在本地连接到 MongoDB 数据库

作者:迹忆客 最近更新:2023/05/10 浏览次数:

Python 是数据科学最流行的编程语言,而 MongoDB 凭借其灵活和动态的模式,是创建现代 Web 应用程序、JSON API 和数据处理器的绝佳组合,仅举几个例子。

MongoDB 还包括一个本地 Python 驱动程序和一个致力于确保 MongoDB 和 Python 无缝协同工作的工程师团队。

Python 为常见的数据操作和处理操作提供了广泛的支持。 例如,Python 的原生字典和列表数据结构在处理 JSON 文档时仅次于 JavaScript,使其非常适合与 BSON 一起使用。

PyMongo 是官方的 Python MongoDB 驱动程序库,同样简单,并提供用于访问数据库、集合和文档的直观 API。

使用 PyMongo 从 MongoDB 获取的对象与字典和列表兼容,允许简单的操作、迭代和打印。


在 MongoDB 中存储数据

MongoDB 将数据存储在类似 JSON 的文档中:

# Mongodb document (JSON-style)
document_1 = {
"_id" : "BF00001CFOOD",
"item_name" : "Bread",
"quantity" : 2,
"ingredients" : "all-purpose flour"
}

Python 字典如下所示:

# python dictionary
dict_1 = {
"item_name" : "blender",
"max_discount" : "10%",
"batch_number" : "RR450020FRG",
"price" : 440
}

Python 的先决条件和安装

在您的机器上下载并安装 Python。 在命令行窗口中键入 python 以确认您的安装是否正确。

你应该得到以下信息:

Python 3.9.1 (tags/v3.9.1:9cf6752, Feb  5 2021, 10:34:40) [MSC v.1927 64 bit (AMD64)] on win32
>>>

如果您不熟悉 Python,则可以按照本课中的 Python MongoDB 示例进行操作。


使用 Python 在本地连接到 MongoDB 数据库

PyMongo 提供了一套用于在 Python 中使用 MongoDB 的库。 要启动并运行 PyMongo,请打开命令提示符并键入以下内容:

python -m pip install pymongo

对于本 Python MongoDB 教程,您将使用 MongoDB SRV URI。 所以让我们安装dnspython:

python -m pip install dnspython

现在,您可以在我们的代码中使用 import 语句将 PyMongo 用作 Python MongoDB 库。 但是,首先,我们用 Python 创建一个 MongoDB 数据库。

因此,连接 Python 的第一步是 MongoDB 集群设置。

接下来,将PyMongo代码写入任意子目录下的pymongo测试insert.py文件中。 任何简单的文本编辑器,例如 Textpad/Notepad,就足够了。

将以下行添加到 MongoDB 客户端:

def get_database():
    from pymongo import MongoClient
    import pymongo

    # Provide the mongodb url to connect python to mongodb using pymongo
    CONNECTION_STRING = "mongodb+srv://<username>:<password>@<cluster-name>.mongodb.net/myFirstDatabase"

    # Create a connection using MongoClient. You can import MongoClient or use pymongo.MongoClient
    from pymongo import MongoClient
    client = MongoClient(CONNECTION_STRING)

    # Create the database for your example
    return client['user_shopping_list']

    # This is added so that files can reuse the function get_database()
    if __name__ == "__main__":

    # Get database
    dbname = get_database()

要获取 MongoDB 数据库连接,请使用 CONNECTION_STRING 创建 Mongo 客户端。 首先更改集群名称、用户名和密码。

在本 Python MongoDB 课程中,您将制作一个购物清单并添加一些产品。 您为此创建了一个名为用户购物清单的数据库。

另一方面,在您向其中添加集合和文档之前,MongoDB 不会建立数据库。 所以,接下来,让我们做一个集合。


在 Python 中创建集合

要创建集合,请将集合名称传递给数据库。 将代码复制到 .py 文件时确保缩进正确。

collection_name = dbname["user_1_items"]

这将在 user_shopping_list 数据库中创建一个名为 user_1_items 的集合。


在 Python 中插入文档

使用 PyMongo insert_many() 方法一次插入多个文档。

item1 = {
"_id" : "U1IT00001",
"item_name" : "Blender",
"max_discount" : "10%",
"batch_number" : "RR450020FRG",
"price" : 440,
"category" : "kitchen appliance"
}

item2 = {
"_id" : "U1IT00002",
"item_name" : "Egg",
"category" : "food",
"quantity" : 12,
"price" : 50,
"item_description" : "brown country eggs"
}
collection_name.insert_many([item1, item2])

插入第三个文档而不提及 _id 字段。 这一次,您将包括一个日期数据类型字段。

使用 Python dateutil 模块在 PyMongo 中添加日期。 因为 ISODate 是一个 Mongo shell 函数,所以它不适用于 Python。

python -m pip install python-dateutil 是安装包的命令。 然后,在 pymongo test.py 中,添加以下内容:

from dateutil import parser
expiry_date = '2021-07-13T00:00:00.000Z'
expiry = parser.parse(expiry_date)
item3 = {
"item_name" : "Bread",
"quantity" : 2,
"ingredients" : "all-purpose flour",
"expiry_date" : expiry
}
collection_name.insert_one(item3)

insert one() 方法用于插入单个文档。

首先,使用命令行导航到保存 pymongo test insert.py 的位置。 然后,使用 Python pymongo test insert.py 命令运行该文件。


在 Python 中查询

您可以使用 find() 一起查看所有文档。 为此,您将创建一个单独的文件 pymongo_test_query.py:

# Get the database using the method you defined in the pymongo_test_insert file
from pymongo_test_insert import get_database
dbname = get_database()

# Create a new collection
collection_name = dbname["user_1_items"]

item_details = collection_name.find()
for item in item_details:
    # This does not give a readable output
    print(item)

使用命令行导航到保存 pymongo test query.py 的文件夹。 您可以使用 python pymongo test query.py 命令并运行该程序。

数据是可见的,但格式并不理想。 因此,这里是要打印的项目名称及其类别:

print(item['item_name'], item['category'])

即使 MongoDB 收到了所有数据,您也会在第三个文档上收到 python KeyError。 使用 pandas 处理 Python DataFrames 中的缺失数据问题。

DataFrame 是用于数据处理的二维数据结构。 例如,Pymongo 的 discover() 方法返回字典对象,只需一行代码即可将其转换为数据框。

将 pandas 库安装为:

python -m pip install pandas

将for循环替换为如下代码,一步处理 KeyError:

from pandas import DataFrame
# convert the dictionary objects to a data frame
items_dfs = DataFrame(item_details)
print(items_dfs)

记得把 print(item['item name'], item['category']) 注释掉。 对于缺失值,NaN 和 NaT 用于替换错误。


Python 和 MongoDB 中的索引

现实世界数据库中的文档和集合的数量在不断增长。 在广泛的收藏中,搜索特定的文件——例如,包含通用面粉作为成分的记录——可能需要很长时间。

索引使数据库搜索更快、更有效且成本更低——例如,排序、计数、匹配等。

在集合级别,MongoDB 定义了索引。 它将新文档添加到我们的集合中,使索引更符合逻辑。

使用 insert many() 方法,可以同时插入多个文档。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 MongoDB Shell 中列出所有数据库

发布时间:2023/05/11 浏览次数:75 分类:MongoDB

交互式 Mongo Shell 提供了多个用于获取数据的选项。 本文介绍了在 Mongo Shell 中列出数据库的几种不同方法。

MongoDB 中检查字段包含的字符串

发布时间:2023/05/11 浏览次数:137 分类:MongoDB

这篇文章解决了如何在 MongoDB 中使用正则表达式来确定字段是否包含字符串。在 MongoDB 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。

在 MongoDB 中 upsert 更新插入

发布时间:2023/05/11 浏览次数:162 分类:MongoDB

在 MongoDB 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findAndModify() 操作中使用。MongoDB 中的 upsert 查询 upsert 采用单个布尔参数。

如何卸载 MongoDB

发布时间:2023/05/11 浏览次数:180 分类:MongoDB

要从您的计算机中卸载 MongoDB,您必须先删除 MongoDB 服务、数据库和日志文件。使用这篇 MongoDB 文章,您将能够从 Ubuntu Linux、Mac 和 Windows 卸载 MongoDB。 请务必保留数据备份,因为一旦卸载,便

在 MongoDB 中存储日期和时间

发布时间:2023/05/11 浏览次数:199 分类:MongoDB

本 MongoDB 教程解释了 Date() 对象是什么以及如何使用 Date() 方法对集合进行排序。 这也将帮助您找到在 MongoDB 中显示和存储日期/时间的最佳方法。

MongoDB 按 ID 查找

发布时间:2023/05/11 浏览次数:139 分类:MongoDB

MongoDB 中的 find by Id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 ID 匹配的文档,则返回空值。

检查 MongoDB 服务器是否正在运行

发布时间:2023/05/11 浏览次数:127 分类:MongoDB

这篇 MongoDB 教程将告诉您如何检查是否安装了 MongoDB 以及安装的 MongoDB 服务器的版本。 它在 Windows、UBUNTU 和 MAC 等不同的操作系统中实现。

MongoDB 中的分页

发布时间:2023/05/11 浏览次数:140 分类:MongoDB

这篇文章将介绍什么是 MongoDB 中的分页。 为什么在 MongoDB 中需要分页以及在 MongoDB 中完成分页的不同方法或方式是什么。

MongoDB 从查询开始

发布时间:2023/05/11 浏览次数:135 分类:MongoDB

在这篇 MongoDB 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便