📜  Django数据库迁移

📅  最后修改于: 2020-12-31 00:43:56             🧑  作者: Mango

Django数据库迁移

迁移是将我们对模型所做的更改应用到数据库模式中的一种方法。的Django会为每个模型来创建表模式迁移文件夹内迁移文件,并且每个表被映射到的创建迁移模型。

Django提供了用于执行与迁移相关的任务的各种命令。创建模型后,我们可以使用这些命令。

  • makemigrations:用于创建一个迁移文件,该文件包含模型的表模式的代码。
  • migrate:它根据迁移文件中定义的架构创建表。
  • sqlmigrate:用于显示所应用迁移的原始SQL查询。
  • showmigrations:列出所有迁移及其状态。

假设我们有一个如下所示的模型,并且包含以下属性。

模型

//models.py

from django.db import models
class Employee(models.Model):
    eid = models.CharField(max_length=20)
    ename = models.CharField(max_length=100)
    econtact = models.CharField(max_length=15)
    class Meta:
        db_table = "employee"

要为此模型创建迁移,请使用以下命令。它将在迁移文件夹内创建一个迁移文件。

$ python3 manage.py makemigrations

该迁移文件包含创建迁移类的代码,其中包含雇员表的名称和字段。

移居

// 0001_initial.py

from django.db import migrations, models
class Migration(migrations.Migration):
    initial = True
    dependencies = [
    ]
    operations = [
        migrations.CreateModel(
            name='Employee',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('eid', models.CharField(max_length=20)),
                ('ename', models.CharField(max_length=100)),
                ('econtact', models.CharField(max_length=15)),
            ],
            options={
                'db_table': 'employee',
            },
        ),
    ]

创建迁移后,对其进行迁移,以使其永久反映数据库。下面给出了migrate命令。

$ python3 manage.py migrate

除了创建迁移之外,我们还可以看到原始SQL查询在应用的迁移后面执行。 sqlmigrate应用程序名称migration-name用于获取原始SQL查询。看一个例子。

$ python3 manage.py migrate

showmigrations命令用于显示已应用的迁移。参见示例。

如果未提供app-name,则显示所有应用于项目的迁移。

$ python3 manage.py showmigrations

通过指定应用程序名称,我们可以获得特定于应用程序的迁移,请参见示例。

$ python3 manage.py showmigrations myapp