【问题标题】:Can't use multiple Databases in my django project无法在我的 django 项目中使用多个数据库
【发布时间】:2019-09-16 05:15:14
【问题描述】:

我正在尝试为我的 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

【问题讨论】:

  • 您是否在辅助数据库上运行了manage.py migrate
  • @JohnGordon 检查我上次的编辑!
  • 您最初运行manage.py makemigrations 时是否在settings.py 中存在辅助数据库?还是你后来添加的?
  • 那我认为这是你的问题。添加新数据库/模型时,您必须重新运行 makemigrationsmigrate
  • 说“它不起作用”是没有帮助的。到底发生了什么?

标签: python django django-models django-forms django-database


【解决方案1】:

您缺少报价'。 试试这个

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

您可以查找此Multi DB Save

【讨论】:

  • 我的错,这是复制代码时的拼写错误。这行在我的原始代码中是正确的,只是在创建问题时出错
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-14
  • 2016-01-29
  • 2023-03-22
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 2012-02-12
相关资源
最近更新 更多