django連接mongodb mongoengine


優點

MongoEngine ()
1. 提供了和 Django 原生 ORM 幾乎一樣的一切,功能已經相當強大;
2. 用起來比 Django 原生 ORM 更簡潔更優雅;
3. MongoEngine 和 Django “契合度”很高,Session,User 模塊幾乎可以直接平移過來,但MongoEngine 本身不依賴 Django,可以用在其他框架上;
4. 本身很輕巧,文檔很豐富,所以文檔提供不了的細節,可以通過直接讀代碼來解決。

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

參考https://www.zhihu.com/question/19818326

先安裝mongoengine模塊

pip3 install mongoengine

然后在setting里配置

在INSTALLED_APPS里注冊'mongoengine',把原來的database設置為None

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles','mongoengine'
]

 

 

MONGODB_DATABASES = {
    "default": { "name": "test", "host": '127.0.0.1', "tz_aware": True, # 設置時區 }, }#這個好像可加可不加,我沒有加照樣可以使用

DATABASES = { 'default': { 'ENGINE': None,
     #
'ENGINE':'django.db.backends.dummy',#也可以這樣設置
    }
}
from mongoengine import connect
connect('test', host='127.0.0.1')#test是數據庫名稱,如果是本機就不用加host參數了
 

 

models.py使用

在models.py里導入mongoengine,類名就是表名,繼承基類mongoengine.Document

import mongoengine
class Visit(mongoengine.Document):

    v_type = mongoengine.StringField(max_length=30)
    v_times = mongoengine.IntField(default=1,null=True)
    end_time=mongoengine.DateTimeField(null=True)

不用makemigrations和migrate,直接就能用

 

參考的https://www.jianshu.com/p/ab3561ebdafd


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM