如何在 Ubuntu 20.04 上使用 PyMongo 在 MongoDB 中执行 CRUD 操作

作者选择了 自由和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

MongoDB是一个通用、文档导向的 NoSQL数据库程序,它使用 JSON - 类似的文档来存储数据。与关系数据库中使用的表关系不同,JSON类似的文档允许灵活和动态的方案,同时保持简单性。

数据库驱动程序或连接器是将应用程序连接到数据库程序的程序。使用Python在MongoDB中执行CRUD操作时,需要一个驱动程序来建立通信渠道。

在本指南中,您将撰写一个 Python 脚本,创建、检索、更新和删除在 Ubuntu 20.04 上本地安装的 MongoDB 服务器中的数据。

前提条件

在您使用此指南前,您将需要以下内容:

步骤 1 - 设置 PyMongo

在此步骤中,您将安装 PyMongo,Python 推荐的 MongoDB 驱动程序. 作为与 MongoDB 合作的工具集,PyMongo 通过语法和原生于 Python 的界面来促进数据库请求。

要启用 PyMongo,请打开您的 Ubuntu 终端并从 Python 包索引安装。建议在虚拟环境中安装 PyMongo,以便隔离您的 Python 项目。

1pip3 install pymongo

pip3是指Python 3版本的Python(https://pypi.org/project/pip/)包安装程序,请注意,在Python 3虚拟环境中,您可以使用命令pip而不是pip3

现在,用下面的命令打开Python解释器. 解释器是一个虚拟机,它就像一个Unix壳一样运作,在那里你可以互动地执行Python代码。

1python3

当你得到类似于下面的输出时,你在解释器中:

1[secondary_label Output]
2Python 3.8.5 (default, Jan 27 2021, 15:41:15)
3[GCC 9.3.0] on linux
4Type "help", "copyright", "credits" or "license" for more information.

成功输出时,在 Python 解释器中导入pymongo:

1import pymongo

使用导入语句,您可以在您的终端访问pymongo模块及其代码。

在下一行中,输入 getpass:

1from getpass import getpass

getpass是一个用于管理密码输入的模块,该模块提示您寻找密码而不显示输入,并添加了一种安全机制,以防止密码显示为简单文本。

在这里,与 MongoClient 进行连接,以启用您的数据库的 MongoDB 实例。 声明变量客户端,以便将 MongoClient 实例以主机用户名密码authMechanism作为参数:

1client = pymongo.MongoClient('localhost', username='username', password=getpass('Password: '), authMechanism='SCRAM-SHA-256')

要连接到具有授权功能的 MongoDB,MongoClient 需要四个参数:

  • host - 安裝 MongoDB 的伺服器的主機名稱.由於 Mongo 在這種情況下是本地的,請使用「localhost」。
  • usernamepassword - 在 MongoDB 啟用認證後建立的授權認證。

一旦您建立了客户端连接,您现在可以与您的 MongoDB 实例进行交互。

步骤 2 – 测试数据库和收藏

在此步骤中,您将熟悉 NoSQL 概念,如应用于 MongoDB 的集合和文档。

MongoDB 支持在 MongoClient 实例中管理多个独立数据库. 您可以使用 MongoClient 实例上的属性风格访问或创建数据库。

1db = client.workplace

在这种情况下,工作场所数据库会跟踪您将添加的员工记录,例如员工的名称和角色。

接下来,创建一个集合,类似于关系数据库中的表格,集合在MongoDB中存储一组文档,在Python解释器中,创建一个员工集合作为一个db的属性,并将其分配给一个具有相同名称的变量:

1employees = db.employees

创建员工集合作为db的属性,并将其分配给具有相同名称的变量。

<$>[注] 注: 在 MongoDB 中,数据库和集合被虚假地创建,这意味着在创建第一个文档之前,上述代码都没有真正执行。

现在你已经审查了集合,让我们看看MongoDB是如何代表文档的,这是代表数据的基本结构。

步骤 3 – 执行 CRUD 操作

在此步骤中,您将执行CRUD操作来操纵MongoDB中的数据,创建、检索、更新和删除(CRUD)是计算机编程中可以执行创建持久存储的四项基本操作。

要将 Python 中的数据作为 JSON 类似的文档,使用字典,创建具有名称角色属性的样本员工记录:

1employee = {
2  "name": "Sammy",
3  "role": "Developer"
4}

正如你所看到的,Python 字典(LINK0)在语法上与 JSON 文档非常相似,PyMongo 将 Python 字典转换为 JSON 文档,以便存储可扩展的数据。

在此时刻,将员工记录插入员工集合:

1employees.insert_one(employee)

员工集合中调用insert_one()方法,提供先前创建的员工记录以被插入。

1[secondary_label Output]
2<pymongo.results.InsertOneResult object at 0x7f8c5e3ed1c0>

现在,请验证您是否成功插入了员工记录和集合,然后执行查询以找到您刚刚创建的员工:

1employees.find_one({"name": "Sammy"})

员工集合中使用名称查询调用find_one()方法将返回一个单一的匹配文档,当您只有一份文档,或者当您对第一个匹配感兴趣时,此方法非常有用。

结果应该是这样的:

1[secondary_label Output]
2{'_id': ObjectId('606ae5b2358ddf640da46894'), 'name': 'Sammy', 'role': 'Developer'}

<$>[注] 注: 插入文档时,如果文档中尚未包含 _id 密钥,则会自动添加一个单一的键 _id

如果需要修改现有文档,请使用 update_one() 方法. update_one() 方法需要两个参数, queryupdate:

  • ** Query** - {"name": "Sammy"} - PyMongo将使用此查询参数来找到具有匹配元素的文档。
  • update - { "$set": {"role": "Technical Writer"} } - 更新参数实现了 `$set operator',该参数用指定值替换了字段的值。

员工集合中调用update_one()方法:

1employees.update_one({"name": "Sammy"}, { "$set": {"role": "Technical Writer"} })

成功更新将返回类似于此的输出:

1[secondary_label Output]
2<pymongo.results.UpdateResult object at 0x7f8c5e3eb940>

要删除单个文档,请使用 delete_one() 方法。 delete_one() 需要一个查询参数,该参数指定要删除的文档。

1employees.delete_one({"name": "Sammy"})

这将删除您在员工集合中唯一的条目。

1[secondary_label Output]
2<pymongo.results.DeleteResult object at 0x7f8c5e3c8280>

再次使用find_one()方法,显然您已成功删除Sammy的员工记录,因为没有任何打印到控制台。

1employees.find_one({"name": "Sammy"})

「insert_one()」、「find_one()」、「update_one()」和「delete_one()」是使用PyMongo开始执行MongoDB CRUD操作的好方法。

结论

在本指南中,您已经探索了如何设置和配置 PyMongo,数据库驱动程序,以连接Python代码到MongoDB,以及创建,检索,更新和删除文档。

有关 MongoDB 管理的更多信息,请参阅 如何在 Ubuntu 20.04 上备份、恢复和迁移 MongoDB 数据库 和 [如何在 Ubuntu 20.04 上导入和导出 MongoDB 数据库(https://andsky.com/tech/tutorials/how-to-import-and-export-a-mongodb-database-on-ubuntu-20-04) ]。

Published At
Categories with 技术
comments powered by Disqus