将 Djongo (Mongo ORM) 与 CosmosDB 一起使用?

Posted

技术标签:

【中文标题】将 Djongo (Mongo ORM) 与 CosmosDB 一起使用?【英文标题】:Using Djongo (Mongo ORM) with CosmosDB? 【发布时间】:2019-01-09 00:03:33 【问题描述】:

我目前正在尝试将 djongo 与 CosmosDB 数据库一起使用,因为 CosmosDB 集成了 MongoDB API。

我启用了“聚合管道”和“3.4 有线协议”,因为 Djongo 需要 MongoDB 3.4 才能工作。

使用此设置,我无法通过初始 django 迁移。我对本地 MongoDB 实例没有任何问题。

这是运行python manage.py migrate时的djongo输出:

djongo.sql2mongo.SQLDecodeError: FAILED SQL: CREATE TABLE "django_migrations" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "app" char NOT NULL, "name" char NOT NULL, "applied" datetime NOT NULL)
Pymongo error: OrderedDict([('_t', 'OKMongoResponse'), ('ok', 0), ('code', 48), ('errmsg', "a collection 'iot_data.__schema__' already exists"), ('$err', "a collection 'iot_data.__schema__' already exists")])

我可以在 CosmosDB 的数据浏览器中看到已经创建了两个集合:__schema__django_migrations,但 django_migrations 是空的。

我以前没有使用 no-sql 的经验,所以我可能误解了一些东西。

我不知道是否有人已经尝试将 Djongo 与 CosmosDB 数据库一起使用,但我们将不胜感激:)

【问题讨论】:

你能解决这个问题吗?我也面临同样的问题。 你有没有偶然解决这个问题? 【参考方案1】:

您似乎正在使用“embeddedmodelfields”,请尝试使用“djongo.models”中的models.ForeignKey。创建新数据库并运行迁移。

【讨论】:

以上是关于将 Djongo (Mongo ORM) 与 CosmosDB 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将Django ORM连接到mongo atlas?

mongo_aggregate() 的 Djongo 映射器问题

使用Mongoose(ORM)将多个应用程序与一个mongo数据库连接

djongo:Django和MongoDB连接器

Django 与 Djongo,EmbeddedFields 返回模型尚未加载

djongo 项目创建与项目初始化