首页 > 解决方案 > 无法在我的 django 项目中使用多个数据库

问题描述

我正在尝试为我的 django 项目使用两个数据库。第一个用于身份验证等,第二个应保存用户通过表单发送的数据。

我将第二个数据库添加到我的settings.py文件中,但我不断收到错误,最近的一个是(1146, "Table 'dataset.main_SomeModel' doesn't exist")

事实上,看起来我的 Django 项目无法与数据库交互,因为那里没有表。

难道我做错了什么?也许在这里使用两个数据库是错误的方式?

这是settings.py,调用的第二个数据库dataset是我正在尝试使用的数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    },
    'dataset': {
        'NAME': 'dataset',
        'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'PASSWORD': 'password goes here'
    }
}

这是模型:

class SomeModel(models.Model):
    data = models.CharField(max_length=100)
    num = models.Float()

    def save(self): # ALL the signature         
        super(SomeModel, self).save(using='dataset')

这是表格:

class DataForm(forms.ModelForm):

    class Meta:
        model = SomeModel
        fields = ("data", "num")

    def save(self, commit=True):
        send = super(DataForm, self).save(commit=False)
        if commit:
            send.save()
        return send

既然我添加了该行using="dataset",不应该将数据发送到dataset数据库吗?还是我做错了什么?任何建议表示赞赏!

编辑:我尝试使用迁移第二个数据库,manage.py migrate --database="dataset"但出现错误The connection dataset doesn't exist

标签: pythondjangodjango-modelsdjango-formsdjango-database

解决方案


你缺少报价'。尝试这个

super(SomeModel, self).save(using='dataset')

您可以查找此多数据库保存


推荐阅读