2017-02-11 88 views
3

在过去几个月里,有没有人在Django(+1.10)中替换MongoDB的默认数据库引擎?我在Google上获得的所有信息都与6年或4年前相似。将Django +1.10连接到MongoDB

最公地结果包括MongoDB的发动机需要Django的nonrel(从Django的1.5真的老了叉),或mongoengine,也是给许多错误过时的库,所以当你接一个,你会得到一个新的。

我不知道是否有任何“新”的方式来实现这一点。

+0

你有什么发现? –

+0

在Django中使用Mongodb似乎不是一个好主意,因为它具有最好的ORM之一,并且不会使用Django杀手功能。 – vtisnado

+0

@vtisnado你​​解决了这个问题吗?我在使用MongoDB的Djnago 1.11中面临同样的问题 – jignasha

回答

2

与多家建造和使用泊坞窗尝试不同的版本组合的测试,我设法使用下面的版本以达到一个稳定和工作的Django MongoDB的应用:

Django==1.10.0 
pymongo==2.7.1 
six==1.10.0 
mongoengine==0.9.0 

安装所需的库后,编辑您的settings.py更新或添加以下内容

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.dummy' 
    } 
} 
AUTHENTICATION_BACKENDS = (
    'mongoengine.django.auth.MongoEngineBackend', 
) 
from mongoengine import * 
    connect('database_name', host='host_ip', port=27017) 

更改数据库名称和主机IP。如果没有说明ip,它会默认连接到本地主机。

现在,运行您的应用程序应该已连接数据库并且可以使用。 有关如何使用它的信息,请查看mongoengine documentation

0

有多种方式可以集成MongoDB和Django。根据您采取的策略,您可能最终头痛或顺利起航!

作为Web开发人员,你可能需要的Django连接的MongoDB的挑战有两种方式:

使用MongoDB的兼容模型框架:在你的Django项目使用像MongoEngine或明第三方框架。然而将错过:

  • 1500+核心贡献者项目,
  • 每小时修复和票号决议,
  • 斜坡下降现有的Django模型的专业知识和斜坡上升的新模型框架。
  • 也许最大的缺点是你的项目不能使用任何Django的contrib模型!忘记为您的项目使用Admin,Sessions,Users,Auth等,contrib模块!

Django的SQL到MongoDB的transpiler - Djongo:战略是把由Django的ORM生成到pymongo命令Django的SQL查询语法。 Djongo是一个SQL到MongoDB查询编译器。它将每个SQL查询字符串转换为一个mongoDB查询文档。因此,

  • 所有Django模型和相关模块均按原样工作。
  • 使用Django Admin GUI添加MongoDB嵌入式文档。
  • Djongo为Django ORM提供了API扩展,使您可以将一个文档嵌入到另一个文档中,(如MongoEngine)。

如果您正在寻找更多信息,只需添加一行代码就可以找到关于Using Django with MongoDB的文章。否则,您可以直接跳到djongo documentation并开始使用它。