Django不会更新postgresql数据库。

12 浏览
0 Comments

Django不会更新postgresql数据库。

我最近将我的Django项目从SQL Lite数据库转换为Postgresql数据库。由于我还没有进行迁移操作,所以我选择了一个全新的数据库。我遵循了这里的指示:https://stackoverflow.com/a/5421511/3681278

一切都进展得很顺利,通过PGAdmin III更新和添加的内容都能在管理界面上显示出来。但是,当我尝试添加模型并运行同步数据库命令时,虽然没有出现错误,并且看起来一切都正常执行了,但是数据库中的内容没有任何变化。

此外,通过模型提交的更改通常会添加/更改/更新/删除数据库记录,但没有任何效果。

我已经费尽心思地寻找解决办法,但都没有任何结果。

一个有帮助的线索:

当我更改模型名称或删除模型时,系统会询问我是否要删除旧模型。所以,模型肯定是在某个地方生成了一些表,但一次又一次地对postgresql数据库没有任何影响。

这是我的settings.py文件:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'RED_DB',
        'USER': 'postgres',
        'PASSWORD': 'MyPass',
        'HOST': ''
    }
}

提前感谢你的帮助!

0
0 Comments

Django doesn't update postgresql database的问题出现的原因是:Sync db不是一个在修改了模型(迁移)之后可以运行的命令,大多数开发者使用一个叫做south的工具来处理迁移,south是Django的一个可插拔应用程序。

解决这个问题的方法是:使用south工具来处理迁移。具体的解决方法如下:

1. 安装south工具:

pip install south

2. 在Django项目的settings.py文件中,将south添加到INSTALLED_APPS中:

INSTALLED_APPS = (
    ...
    'south',
)

3. 在命令行中运行以下命令来创建迁移文件:

python manage.py schemamigration appname --initial

其中,appname是需要进行迁移的应用程序的名称。

4. 运行以下命令来应用迁移:

python manage.py migrate appname

其中,appname是需要进行迁移的应用程序的名称。

通过以上步骤,就可以使用south工具来处理Django的数据库迁移了。另外需要注意的是,自Django 1.7版本开始,Django已经内置了迁移功能,可以参考官方文档进行使用。

0