mongodb+django 怎麼配置?


MongoEngine (http://mongoengine.org)

1. 提供了和 Django 原生 ORM 幾乎一樣的一切,功能已經相當強大;

2. 用起來比 Django 原生 ORM 更簡潔更優雅;

3. MongoEngine 和 Django 「契合度」很高,Session,User 模塊幾乎可以直接平移過來,但MongoEngine 本身不依賴 Django,可以用在其他框架上;

4. 本身很輕巧,文檔很豐富,所以文檔提供不了的細節,可以通過直接讀代碼來解決。

當然缺點也是很明顯的,最不能習慣的就是 admin 沒了。


django的ORM並不支持NoSQL,但是有一個叫django-nonrel的分支,擴展了django的ORM,支持部分NoSQL資料庫,其中包括mongodb

從我最後一次關心django-nonrel時它的可用度來看,實際生產環境使用還是很困難。比如說

  1. mongodb類NoSQL天然沒有join操作,所以在django-nonrel中使用mongodb時沒有多表繼承功能,只能從abstract類繼承
  2. 沒有join的操作也意味著很多atomic的SQL查詢需要轉換成非atomic的nosql查詢
  3. 很多原ORM的特性在django-nonrel中使用會拋出NotImplemented的異常。

所以正常情況下請勿使用django-nonrel提供的nosql支持(除非你有興趣給它貢獻代碼)

如果確實需要django項目中使用mongodb,兩個解法

  1. 直接使用pymongo做model
  2. 用官方推薦的ORM-like layer http://api.mongodb.org/python/current/tools.html#orm-like-layers


我是根據Django的ORM的源代碼,自己寫了一個Mongodb版ORM,兼容DjangoORM的大部分操作


不需要配置,自己封裝一層直接用。如果你要 ORM,就另當別論了。


Django-MongoEngine MongoEngine/django-mongoengine

之前在一個項目中用過這個模塊,但是這個模塊的介紹中說這是不穩定的,現在就在考慮直接用

MongoEngine


暫時用pymongo可以很大的並發。


http://www.cnblogs.com/holbrook/archive/2012/03/11/2390715.html

研究明白了交流一下,我也在看這個,沒有整明白


推薦閱讀:

是否框架的目的是不一樣的?
知乎後台為什麼用python?
可以多個server進程同時監聽一個unix socket文件么?
Django和Flask這兩個框架在設計上各方面有什麼優缺點?
Vim 中如何對 Python 進行代碼補全?

TAG:NoSQL | MongoDB | Django框架 |