import getpass
from pymongo import MongoClient
# Get connection string from user
connection_string = getpass.getpass(prompt="Enter connection string WITH USER + PASS here: ")try:
client = MongoClient(connection_string)
client.admin.command("ping")print("Successfully connected")except Exception as e:print("Connection failed:", e)技术支持
回到集群查看数据库与集合的名称。数据库名为 sample_mflix,集合名为 users。
下面是该示例集群中的信息示例。每个文档都有一个 ObjectId,以及每位用户的姓名、邮箱和密码。
让我们运行一个小测试,确认可以从脚本中读取文档:
database = client["sample_mflix"]
collection = database["users"]for document in collection.find().limit(20):print(document)技术支持
new_user ={"name":"Anaiya Raisinghani","email":"[email protected]","password":"pleasedonothackme"}# insert the document
result = collection.insert_one(new_user)print(result.inserted_id)技术支持
我们可以看到新用户的 ID。如果我回到集群,就能通过该 ID 搜索并确认新的用户文档是否出现:
现在,我们来更新刚创建的文档。
注意:BSON 随 PyMongo 一同安装——无需额外安装。ObjectId 是 MongoDB 的默认唯一 ID 格式。
from bson import ObjectId
collection.update_one({"_id": result.inserted_id},# using the same document that we inserted above{"$set":{"password":"help!ivebeenhacked!!"}})技术支持
准备好把您的 MongoDB 集群连接到 Python 项目了吗?您来对地方了。本文将介绍什么是 PyMongo、为什么它是使用 MongoDB 作为数据库的 Python 开发者的首选包,以及如何尽可能高效地建立您的第一个连接并跑起来。
如果您刚开始上手,别错过我们的课程:Introduction to Using MongoDB for Data Science in Python。
什么是 PyMongo?
那么,PyMongo Python 包究竟是什么?它是 MongoDB 的官方 Python 驱动,允许开发者在 Python 应用与 MongoDB 数据库之间进行连接、查询和交互。
它是从 Python 与 MongoDB 数据库交互的推荐方式,并且因与 Flask 和 Django 的良好兼容性,非常适合构建各类 Web 应用。它帮助 Python 开发者在不同应用中充分发挥 MongoDB 的优势。
接下来,我们将通过运行一个示例 CRUD(创建、读取、更新、删除)用户应用来演示如何开始使用 PyMongo,您会发现只需极少的代码就能轻松上手!
成功所需条件
要顺利跟随本教程,请确保具备以下前提条件:
pip已安装(如果您使用的不是 Google Colab 笔记本)。设置 MongoDB 集群
在将 MongoDB 数据库连接到 Python 项目之前,我们需要先创建一个集群!为此,请登录您的MongoDB Atlas 帐号,如果还没有项目,请先创建一个新项目。
然后,在该项目内创建一个集群。
现在可以部署集群了。点击“Free”层(永久免费!),为您的集群选择一个名称,或保留默认名称。
请注意,一旦为集群命名,之后将无法更改。选择云服务商(可选 AWS、Google Cloud 和 Azure),并确保处于正确的区域。
点击绿色的“Create Deployment”按钮,我们就可以继续了。
系统会提示您为集群设置“Username”和“Password”。请设置一个既易记(别像本教程这样“太好记”)又安全的组合,因为每次访问连接字符串时都需要用到它们。
同时请务必勾选“Preload sample dataset”,以便操作更简单。系统会自动加载我们将要使用的“sample_mflix”示例数据集。
点击“Create Database User”继续。
现在,您可以连接到集群了!连接方式有很多,但由于本文聚焦于 PyMongo,我们将通过 Drivers 进行连接。
选择“Python”及您希望使用的版本(我们选择 4.7 或更高版本),您就会看到连接字符串。为方便使用,系统会自动填入您的用户名和密码。
既然已经拿到了连接字符串,请将其妥善保存。然后点击绿色的“Done”按钮。
这就是配置完成后的集群界面。
请前往左侧的“Network Access”,确保您的 IP 地址配置正确。出于教程演示的方便(当然不建议在生产环境这么做),您可以将 IP 地址设置为“Access from Anywhere”。
生产环境警告:对于生产级应用,请在 Atlas 的 Network Access > IP Access List 中将特定 IP 加入白名单。
现在前往您选择的 IDE,来实操一下这些数据吧!
使用 PyMongo 进行连接与 CRUD 操作
第一步是用
pip安装pymongo。我们还会在此步骤安装getpass,以确保连接的安全性:接着设置与集群的 MongoDB 连接。我们将使用
MongoClient来建立连接。回到集群查看数据库与集合的名称。数据库名为
sample_mflix,集合名为users。下面是该示例集群中的信息示例。每个文档都有一个 ObjectId,以及每位用户的姓名、邮箱和密码。
让我们运行一个小测试,确认可以从脚本中读取文档:
运行成功后,您会看到如下输出:
注意:sample_mflix 数据集包含明文密码,仅用于演示。在真实应用中务必对密码进行哈希处理(例如使用 bcrypt 或 Argon2),并避免硬编码凭据。
上面的步骤同时也是读取集群信息的方式!现在我们来创建一个新用户。
我们可以看到新用户的 ID。如果我回到集群,就能通过该 ID 搜索并确认新的用户文档是否出现:
现在,我们来更新刚创建的文档。
注意:BSON 随 PyMongo 一同安装——无需额外安装。ObjectId 是 MongoDB 的默认唯一 ID 格式。
如您所见,密码已更新,修改已反映在 MongoDB Atlas 的界面中。
接下来,我们删除这个文档。
被删除的用户数将为“1”。让我们在 MongoDB Atlas 界面中再次确认(以防万一)。
我们已经成功删除了该文档!
结语
在本教程中,您完成了与 PyMongo(MongoDB 官方 Python 驱动)上手的前 10 分钟。我们成功读取了集合中的文档,创建了新用户,对其进行了更新,并最终删除!
想要了解更多 PyMongo 信息,请查看课程Introduction to Using MongoDB for Data Science in Python,并访问官方文档。