0

我是 Django 的新手,我正在制作一个 Django 应用程序,我应该在其中通过 py-mongo 使用 MySQL 和 MongoDB。(我试图只使用 py-mongo,而不是 mongoengine)

我创建了一个应用程序“测试应用程序”,其模型“书籍”和 CRUD 视图似乎工作正常(所有书籍都被保存和检索)。

但是,由于某种原因,我似乎无法在 MySQL db 和 MongoDB 中找到这些书籍。我不确定模型使用的是哪个数据库。

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)),
            ],
        ),
    ]
4

2 回答 2

0

您需要提及您将使用哪个连接来保存数据。浏览 django 文档以使用不同的连接对象插入来自多个数据库的检索数据。

正如您提到的 DATABASES 是 mysql 它将默认为您创建或删除的任何内容

于 2017-05-03T07:24:13.533 回答
0

Django 不会随意决定为您的模型使用 MongoDB。即使它知道怎么做,您也只是没有将 Mongo 包含在您的 DATABASES 设置中。Django 查找模型的唯一地方是 MySQL 数据库。

于 2017-05-03T08:33:57.783 回答