如何使用模型创建新表

时间:2017-01-10 11:22:42

标签: python django django-migrations

所以我有这个django安装,其中有一堆迁移脚本。他们看起来像这样:

00001_initial.py
00002_blah_blah.py
00003_bleh_bleh.py

现在我知道这些是"数据库建设"这些脚本将获取models.py中定义的内容并将其针对数据库运行到"创建"桌子和东西。

我想创建一个新表(所以我在models.py中创建了它的定义)。为此,我复制了另一个模型类并编辑了它的名称和字段,一切都很好。让我们称之为新的模型类'繁荣'。

我现在的问题是如何创建"这个繁荣表使用迁移脚本和繁荣模型?

我担心我可能会意外地破坏已经存在于DB中的任何内容。如何运行迁移以仅创建热表?如何专门为其创建迁移脚本?

我知道它与manage.py有关并正在运行migraterunmigration(或者是sqlmigrate?...我很困惑)。在创建繁荣表时,如果您知道我的意思,我不希望数据库 boom :)

3 个答案:

答案 0 :(得分:6)

首先,创建数据库的备份。将其复制到您的开发机器。尝试一下。这样一来,如果它真的发展并不重要"繁荣"出于某种原因。

首先要做的是

python manage.py showmigrations

这会显示所有现有的迁移,并且 应该显示它们已应用[X]

然后,

python manage.py makemigrations

为新模型创建一个新的迁移文件(名称00004 _...)。

然后做

python manage.py migrate

申请。要撤消它,请使用

返回到迁移00003的状态
python manage.py migrate <yourappname> 00003

答案 1 :(得分:2)

  

我现在的问题是如何使用“创建”此繁荣表   迁移脚本和繁荣模型?

 ./manage.py makemigrations
  

我担心我可能会意外地破坏任何事情   已经在DB。

迁移的全部意义在于它不是

  

我知道它与manage.py和运行迁移有关   或者迁徙

有关详细信息,请参阅:https://docs.djangoproject.com/en/1.10/topics/migrations/

请放心,您的数据库不会繁荣! : - )

答案 2 :(得分:2)

Django中有两个迁移步骤。

./manage.py makemigrations

将创建您看到的迁移文件 - 这些文件描述了应该对数据库进行的更改。

您还需要运行

./manage.py migrate 

这将应用迁移并在SQL中实际运行alter table命令以更改实际的数据库结构。

通常添加字段或表格不会影响数据库中的任何其他内容。在更改或删除现有字段时要特别小心,因为这可能会影响您的数据。

两个步骤的原因是您可以在开发计算机上进行更改,并且一旦提交迁移文件并将其发布到生产环境,就会很高兴。然后在生产计算机上运行migrate命令,使生产数据库处于与开发机器相同的状态(假设您的数据库启动相同,则无需生产生产数据。)