【问题标题】:Database Api Python/django数据库 API Python/django
【发布时间】:2018-07-18 08:09:29
【问题描述】:

我正在编写一个关于 Django 的教程

当我使用命令 python manage.py shell 调用交互式 shell 访问数据库 API 时,我收到以下提示

In [1]:from music.models import Album, Song
In [2]: Album.objects.all()

然后下一行给我这个

OperationalError: no such table: music_album

【问题讨论】:

  • 您是否构建了迁移(使用makemigrations)和迁移(使用migrate)?

标签: python django database web-development-server


【解决方案1】:

正如错误所说,这意味着您的数据库没有表对应于这些模型。

这通常意味着您忘记迁移您的数据库。通过运行:

python manage.py makemigrations

Django 将构建文件(在someapp/migrations/ 中)这些文件描述了必须执行的步骤,以便使用正确的列构建表,或者稍后在进度列可以重命名、删除表、构建新表.如果您运行该命令,您将看到弹出的描述这些迁移的新文件。

但现在您仍然没有迁移数据库本身,您只是构建了文件。例如,您可能想自己添加自定义迁移。如果迁移文件正确,您可以运行

python manage.py migrate

相应地更改数据库。

为了运行迁移,必须在 settings.py 文件中正确指定数据库。但是由于您获得了一个抱怨找不到表的OperationalError,我认为这已经(正确地)处理了。

请参阅Django topic on migrations [Django-doc] 了解更多信息。

【讨论】:

    【解决方案2】:

    Configure your database connection 在您的settings.py 中,并且在创建 Django 模型之后,您必须执行两个命令:

    • python manage.py makemigrations
    • python manage.py migrate

    然后将在数据库中创建表,然后您将能够在 shell 中使用它们

    【讨论】:

      猜你喜欢
      • 2012-05-08
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-11
      • 2014-07-13
      相关资源
      最近更新 更多