使用 Python 在本地连接到 MongoDB 数据库
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()
方法,可以同时插入多个文档。
相关文章
在 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 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。