使用 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://:@.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 浏览次数:180 分类:mongodb
-
交互式 mongo shell 提供了多个用于获取数据的选项。 本文介绍了在 mongo shell 中列出数据库的几种不同方法。
mongodb 中检查字段包含的字符串
发布时间:2023/05/11 浏览次数:1024 分类:mongodb
-
这篇文章解决了如何在 mongodb 中使用正则表达式来确定字段是否包含字符串。在 mongodb 中使用正则表达式 正则表达式 (regex) 是定义搜索模式的文本字符串。
在 mongodb 中 upsert 更新插入
发布时间:2023/05/11 浏览次数:214 分类:mongodb
-
在 mongodb 中,upsert 结合了更新和插入命令。 它可以在 update() 和 findandmodify() 操作中使用。mongodb 中的 upsert 查询 upsert 采用单个布尔参数。
如何卸载 mongodb
发布时间:2023/05/11 浏览次数:745 分类:mongodb
-
要从您的计算机中卸载 mongodb,您必须先删除 mongodb 服务、数据库和日志文件。使用这篇 mongodb 文章,您将能够从 ubuntu linux、mac 和 windows 卸载 mongodb。 请务必保留数据备份,因为一旦卸载,便
在 mongodb 中存储日期和时间
发布时间:2023/05/11 浏览次数:762 分类:mongodb
-
本 mongodb 教程解释了 date() 对象是什么以及如何使用 date() 方法对集合进行排序。 这也将帮助您找到在 mongodb 中显示和存储日期/时间的最佳方法。
mongodb 按 id 查找
发布时间:2023/05/11 浏览次数:1856 分类:mongodb
-
mongodb 中的 find by id() 函数用于获取与用户提供的 id 相匹配的文档。 如果找不到与指定 id 匹配的文档,则返回空值。
检查 mongodb 服务器是否正在运行
发布时间:2023/05/11 浏览次数:247 分类:mongodb
-
这篇 mongodb 教程将告诉您如何检查是否安装了 mongodb 以及安装的 mongodb 服务器的版本。 它在 windows、ubuntu 和 mac 等不同的操作系统中实现。
mongodb 中的分页
发布时间:2023/05/11 浏览次数:174 分类:mongodb
-
这篇文章将介绍什么是 mongodb 中的分页。 为什么在 mongodb 中需要分页以及在 mongodb 中完成分页的不同方法或方式是什么。
mongodb 从查询开始
发布时间:2023/05/11 浏览次数:186 分类:mongodb
-
在这篇 mongodb 文章中,用户将学习如何使用 $regex 进行开始查询。 它为查询中的模式匹配字符串提供正则表达式功能。