2017-05-03 39 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