相信我,我最终尝试使用 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 集群。该应用程序看起来像这样 -

[MongoDB Compass 接口](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 文件并使用它-

[Mongoengine 在 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

由于版本控制的恶作剧,我被关闭了。

关键要点

  1. 我强烈推荐使用 mongoengine,因为它可以通过模型轻松访问集合。

  2. Djongo 很容易与 Django 连接。 (我曾尝试连接所有三个,但不知何故 pymongo 的版本不兼容不允许我连接到 djongo)

显然,Djongo 依赖于 pymongo 和 sqlparse,所以我们需要在安装 Djongo 后为 pymongo 获取正确的版本-

[Djongo + sqlparse + 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

进入全屏模式 退出全屏模式

  1. 因此,使用以下组合对我来说很神奇 -
  • Django v 1.3.6

  • 3.12.1 中的 Pomongo

  • 5.0.5 中的 MongoDB

Logo

MongoDB社区为您提供最前沿的新闻资讯和知识内容

更多推荐