我正在用django编写应用程序,我想使用mongoDB作为我的数据库。我搜索了很多,发现mongoengine和Pymongo是可能的选择。我决定暂时使用PyMongo。但问题是我无法将我的应用程序连接到mongoDB。到目前为止,我尝试过跟进:
from pymongo import MongoClient
client = MongoClient()
db = client['user_central']
但它不能正常工作。必须在DATABASES django变量中添加一些东西,这就是我被追赶的地方。如何将我的django应用程序连接到mongoDB并使用mongo作为我的Django后端?
任何帮助都将不胜感激。
答案 0 :(得分:1)
Pymongo不是ORM,是一个驱动程序,包含函数工具,可与MongoDB一起使用。
Mongoengine它是一个“文档 - 对象映射器(想想ORM,但对于文档数据库)”基于pymongo。这是一个更好的选择,因为你将使用'ORM',类似于Django关系ORM。
在我看来,django-mongoengine是使用Django + MongoDB的一个很好的选择,是一个可以整合,很难有一些问题,不稳定:“这是不稳定的项目,如果你想要的话使用它 - 修复你需要的东西“,但他们仍在努力。
配置django-mongoengine并不是真正的开箱即用,在他们的README.rst上没有完全描述,但它可以完成。他们有example here如何使用它。
注意:检查django settings.py,有描述Django正在使用虚拟(假数据库),后来他们定义 新设置MONGODB_DATABASES。祝你好运!
答案 1 :(得分:0)
Django ORM仅支持关系数据库,而MongoDB不是关系数据库。因此,理论上它不能被Django支持。
尽管如此,还存在自定义后端,例如mongodb-engine,它假装Django MongoDB是关系型的。在我看来,这是一个非常丑陋的黑客攻击,会在最糟糕的时刻爆发。如果要使用非关系数据库,请不要使用Django ORM。
如果您是初学者,请使用SQLite。
答案 2 :(得分:0)
如何将我的django应用程序连接到mongoDB并使用mongoDB作为我的Django后端:
首先安装djongo:
pip install djongo
然后运行迁移:
manage.py make migrations
manage.py migrate
最后添加到您的设置文件中:
DATABASES = {
‘default’: {
‘ENGINE’: ‘djongo’,
‘NAME’: ‘your-db-name’,
}
}
就这么简单!
作为Web开发人员,您可以通过两种方式应对将Django连接到MongoDB的挑战:
使用与MongoDB兼容的模型框架:在django项目中使用第三方框架,如MongoEngine或Ming。但是会错过:
Django SQL到MongoDB转发器 - Djongo :策略是将Django ORM生成的Django SQL查询语法转换为pymongo命令。 Djongo是一个SQL to MongoDB查询编译器。它将每个SQL查询字符串转换为mongoDB查询文档。
如果你想使用Django Admin操作MongoDB,只需启动它:
manage.py runserver
转到:http://localhost:8000/admin/
操纵您的嵌入式模型,如此屏幕截图所示:
如果您正在寻找更多信息,请在Using Django with MongoDB上添加一行代码,只需添加一行代码即可。否则,您可以直接跳转到djongo documentation并开始使用它。
答案 3 :(得分:0)
作为一种不太方便(不是自动插入到 django 的功能)但有效的方式,您可以将 MongoDB 作为独立的本地部署在您的计算机或远程服务器上。
然后,使用要与之交互的 mongoDB 服务的 URL 启动 PyMongo 对象。
通过这种方式,您可以在 Django 功能之外使用 DB 调用,但直接从用户代码开始。
如果使用 Linux,我更喜欢使用 mongoDB docker 容器。
$ docker run --name mongodb -p 27017:27017 --net mynet mongo
然后使用:
from pymongo import MongoClient
url = 'mongodb://127.0.0.1:27017'
client = pymongo.MongoClient(url)
db = client['db_name']