将 Django 与 MongoDB 连接:剖析所有版本控制诡计(2022 年版)
相信我,我最终尝试使用 pymongo、mongoengine 和 djongo 将 Django 与 MongoDB 连接起来。尽管 MongoDB 的网站提供了深入和逐步的说明,但在针对“巨大”(Mongo 字面意思是巨大的😛)数据库为您的项目创造奇迹之前,需要解决一些版本控制问题。 这里我假设你使用的是最新的 Django 版本 2.2.26 和 Python 版本 3.6+ 如果您已经安
相信我,我最终尝试使用 pymongo、mongoengine 和 djongo 将 Django 与 MongoDB 连接起来。尽管 MongoDB 的网站提供了深入和逐步的说明,但在针对“巨大”(Mongo 字面意思是巨大的😛)数据库为您的项目创造奇迹之前,需要解决一些版本控制问题。
这里我假设你使用的是最新的 Django 版本 2.2.26 和 Python 版本 3.6+
如果您已经安装了 MongoDB,请跳过第 1 步。请检查版本一次,以更好地了解我们将用于连接 Django 的 2 个驱动程序。
要检查 MongoDB 版本,请使用 -
mongod --version
步骤 1
使用以下命令从终端在本地安装 MongoDB -
冲泡安装mongodb-community@5.0
对于 Windows,您需要获取安装程序并按照此处给出的步骤
第二步
从此处的下载 MongoDB Compass。它提供了类似 SQLWorkbench 的用户友好界面,您甚至可以从那里免费运行 MongoDB 集群。该应用程序看起来像这样 -
[](https://res.cloudinary.com/practicaldev/image/fetch/s--Ja26spKQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to -uploads.s3.amazonaws.com/uploads/articles/9i20q6jo49cgpq21pcwn.jpeg)
第三步
连接到 Django 项目
- **使用 Djongo **
通过终端安装 djongo-
pip install djongo
进入全屏模式 退出全屏模式
使用 djongo 将 MongoDB 与您的 Django 项目实际连接起来,我们需要做的就是将以下内容添加到 settings.py 文件中 -
DATABASES = {
'default': {
'ENGINE': 'djongo',
'NAME': 'YOUR_DATABASE_NAME',
'HOST': 'localhost',
'PORT': '27017'
}
}
进入全屏模式 退出全屏模式
- 使用 MongoEngine
要使用 mongoengine 将 MongoDB 与您的 Django 项目连接,您需要将以下内容添加到 settings.py 文件中 -
_MONGODB_USER = ""
_MONGODB_PASSWD = ""
_MONGODB_HOST = "localhost"
_MONGODB_NAME = "YOUR_DATABASE_NAME"
_MONGODB_PORT = 27017
_MONGODB_DATABASE_HOST = "mongodb://%s:%s@%s/%s" % (
_MONGODB_USER,
_MONGODB_PASSWD,
_MONGODB_HOST,
_MONGODB_NAME,
)
mongoengine.connect(_MONGODB_NAME, host=_MONGODB_HOST, port=_MONGODB_PORT)
进入全屏模式 退出全屏模式
之后,您可以将其导入您的 models.py 文件并使用它-
[](https://res.cloudinary.com/practicaldev/image/fetch/s--JcXVze4o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https:// /dev-to-uploads.s3.amazonaws.com/uploads/articles/ep3j477c9cg38fxcuctd.png)
- **使用 PyMongo **
最新的 pymongo 版本是 4.0.2,与最新的 mongoDB v5.0 不兼容。我收到了这个错误,之后我降级了 pymongo 版本。
pymongo.errors.ConfigurationError: 服务器在 xxxx:xx 报告线版本 5,但是这个版本的 PyMongo 至少需要 6 (MongoDB 3.6)。
3.12.1 中的 pomongo
5.0.5 中的 MongoDb
来源 -pypi.org
由于版本控制的恶作剧,我被关闭了。
关键要点
-
我强烈推荐使用 mongoengine,因为它可以通过模型轻松访问集合。
-
Djongo 很容易与 Django 连接。 (我曾尝试连接所有三个,但不知何故 pymongo 的版本不兼容不允许我连接到 djongo)
显然,Djongo 依赖于 pymongo 和 sqlparse,所以我们需要在安装 Djongo 后为 pymongo 获取正确的版本-
[](https://res.cloudinary.com/practicaldev/image/fetch/s--fHvo0aFo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev -to-uploads.s3.amazonaws.com/uploads/articles/w1pekbvdg08qwo3qtbfs.png)
现在如果你上去查看 pymongo 的版本问题,你就会知道 MongoDB v5.0 与 PyMongo 的 v 4.0 不兼容
要降级 pymongo 的版本,请运行以下命令 -
python3 -m pip install pymongo==3.12.1
进入全屏模式 退出全屏模式
- 因此,使用以下组合对我来说很神奇 -
-
Django v 1.3.6
-
3.12.1 中的 Pomongo
-
5.0.5 中的 MongoDB
更多推荐
所有评论(0)