如何使用mod创建新表

2024-10-01 04:59:55 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

现在我知道这些是“数据库构建”脚本,它们将获取在models.py中定义的内容,并对数据库运行它们来“创建”表和内容。

我想创建一个新表(所以我在models.py中创建了它的定义)。为此,我复制了另一个模型类并编辑了它的名称和字段,一切正常。让我们把这个新的模型类称为“boom”。

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

我担心我可能会不小心破坏数据库中已经存在的任何东西。如何运行迁移以仅创建boom表?如何专门为它创建迁移脚本?

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


Tags: djangopy模型脚本名称数据库编辑内容
3条回答

My question is now how do I "create" this boom table using the migration script and the boom model?

 ./manage.py makemigrations

I am worried that I might accidentally disrupt anything that is already in DB.

迁移的关键是

I know that it has something to do with manage.py and running migrate or runmigration

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

请放心,你的数据库不会爆炸!:-)

在Django有两个迁移步骤。

./manage.py makemigrations

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

你还需要跑

./manage.py migrate 

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

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

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

首先,创建数据库的备份。把它复制到你的开发机器上。试试这个。这样一来,它是否真的因为某种原因而“繁荣”并不重要。

首先要做的是

python manage.py showmigrations

这显示了所有现有的迁移,而且应该显示它们已经用[X]应用。

那么

python manage.py makemigrations

为新型号(名称00004)创建新的迁移文件。

那就去吧

python manage.py migrate

应用它。要撤消它,请返回到迁移00003的状态,并使用

python manage.py migrate <yourappname> 00003

相关问题 更多 >