📜  如何在我的 django 应用程序中向 heroku postgres 添加列 - Python (1)

📅  最后修改于: 2023-12-03 15:38:39.756000             🧑  作者: Mango

如何在我的 Django 应用程序中向 Heroku Postgres 添加列

概述

在开发 Django 应用程序时,有时需要动态向数据库中添加新的列,这一过程可能会比较复杂,尤其是在使用 Heroku Postgres 的情况下。本文将介绍如何在 Django 应用程序中向 Heroku Postgres 添加新的列。

步骤
设置环境变量

首先,需要设置环境变量,在项目根目录下创建一个名为 .env 的文件,并添加以下内容:

DATABASE_URL=postgres://<username>:<password>@<host>:<port>/<database>

其中,<username>, <password>, <host>, <port><database> 分别为 Heroku Postgres 数据库的用户名,密码,服务器地址,端口号和数据库名。

安装依赖

接着,需要安装 dj-database-urlpsycopg2 两个依赖库,可以通过以下命令进行安装:

pip install dj-database-url psycopg2
创建迁移文件

使用 Django 的迁移工具可以方便地管理数据库的变更。可以通过以下命令创建一个新的迁移文件:

python manage.py makemigrations <app_name>

其中,<app_name> 为应用程序名称。

修改迁移文件

打开刚刚创建的迁移文件(位于应用程序目录的 migrations 文件夹下),找到类似下面的代码块:

operations = [
    migrations.CreateModel(
        name='MyModel',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('name', models.CharField(max_length=100)),
        ],
    ),
]

在此基础上添加新的列,例如:

operations = [
    migrations.CreateModel(
        name='MyModel',
        fields=[
            ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
            ('name', models.CharField(max_length=100)),
            ('new_column', models.CharField(max_length=100, blank=True, null=True)),
        ],
    ),
]
执行迁移

现在,可以执行迁移操作将新的列添加到数据库中:

python manage.py migrate <app_name>
成功验证

最后,可以在 Django shell 中验证新的列是否正确添加:

python manage.py shell

执行以下代码:

from <app_name>.models import MyModel
print(MyModel.objects.first().new_column)

如果能够输出正确结果,说明新的列已经成功添加到了数据库中。

结论

通过本文介绍的步骤,可以方便地在 Django 应用程序中向 Heroku Postgres 添加新的列。同时,Django 的迁移工具也可以简化数据库变更的管理,让开发过程更为高效。