2017-05-03 43 views
0

我是Django的新手,我正在製作一個Django應用程序,我應該通過py-mongo使用MySQL和MongoDB。 (我試圖只使用py-mongo,而不是mongoengine)PyMongo和Django

我創建了一個應用'test-app',模型'Books'和一個CRUD視圖似乎工作正常(所有書籍都保存並檢索)。

但是,出於某種原因,我似乎無法在MySQL數據庫和MongoDB中找到Books。我不確定模型使用哪個數據庫。

還有Redis的設置,但即使在重新啓動服務器後,模型條目也存在,所以我猜它不在緩存中。

我的設置是:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'HOST': '127.10.0.1', 
     'NAME': 'test_db', 
     'USER': 'test_user', 
     'PASSWORD': 'test_pass', 
    } 
} 

CACHES = { 
    'default': { 
     'BACKEND': 'redis_cache.RedisCache', 
     'LOCATION': '127.10.0.1:6379', 
     'OPTIONS': { 
      'DB': 0, 
     }, 
    }, 
} 

MONGODB = { 
    'default': { 
     'HOST': '127.10.0.1', 
     'PORT': '27017', 
     'NAME': 'django', 
    } 
} 

而且我requirements.txt:

Django>=1.8,<1.9 
docker-compose>1.11 
django-redis-cache>1.7 
pymongo>=3.4 
MySQL-python>=1.2 

的遷移文件似乎有MongoDB的語法,而不是SQL語法,這讓我覺得這實際上是存儲在MongoDB:

class Migration(migrations.Migration): 

    dependencies = [ 
    ] 

    operations = [ 
     migrations.CreateModel(
      name='Book', 
      fields=[ 
       ('number', models.IntegerField(serialize=False, primary_key=True)), 
       ('author', models.CharField(max_length=200)), 
      ], 
     ), 
    ] 
+0

好像設計得很差的系統。爲什麼SQL和NoSQL系統並行運行會造成複雜的問題?爲什麼不使用一個或另一個? FYI mysql完全能夠存儲非關係數據,例如藉助於JSON數據類型 – e4c5

+0

這是我得到的任務。我猜想MySQL應該存儲Django安裝的應用程序(如auth等)的所有信息,以及模型的MongoDB。 – Kemeia

回答

0

您需要提及您將使用哪個連接來保存數據。通過django文檔使用不同的連接對象插入來自多個數據庫的檢索數據。

和你所提到的對數據庫進行MySQL的將是默認的,無論你創建或刪除

0

的Django不會隨機決定使用MongoDB的爲你的模型;即使它知道如何,你根本沒有在你的DATABASES設置中包含Mongo。 Django只會在MySQL數據庫中尋找你的模型。

+0

謝謝,這很有幫助。雖然我沒有在mysql中看到'book'表(也許是因爲項目是由docker組成的)。爲什麼遷移文件不是使用SQL語法? – Kemeia