2017-02-11 85 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並開始使用它。