Heroku 和 Django 组合中的 Postgresql 更改与共享数据库

Posted

技术标签:

【中文标题】Heroku 和 Django 组合中的 Postgresql 更改与共享数据库【英文标题】:Postgresql changes in Heroku and Django combo with shared database 【发布时间】:2012-03-06 13:38:28 【问题描述】:

我刚刚开始在 Django 中使用 Heroku,它看起来很棒。但是,当我更改现有模型时,我不确定如何将这些更改运行到 Heroku 环境。添加所有新数据库表时,syncdb 工作正常,但我应该如何修改现有表?

我发现 Heroku 只提供对专用数据库的 psql 访问,所以这是不可能的。我没有尝试过 South,但它似乎是一个解决方案。

所以我想我是在问如何使用 Django 和 Heroku 进行数据库更改?

【问题讨论】:

【参考方案1】:

您要求的是“架构迁移”甚至是“schema evolution”。 Django 有一些 documentation about it on the wiki。

Django 的syncdb command 不支持。其实documentation for syncdb is clear:

为 INSTALLED_APPS 中的所有应用创建数据库表 尚未创建表

相反,django 建议使用 drop the tables manually 然后在documentation of the deprecated reset command 中再次运行syncdb

您也可以手动使用 ALTER TABLE 或 DROP TABLE 语句。

但是不要害怕,有许多可重复使用的应用程序可以帮助您进行适当的架构迁移,希望您能选择最适合您的应用程序。请让我链接我写的一篇关于 Django schema migration 的文章,而不是详细说明我的答案,该文章比较了所有当前的解决方案。

【讨论】:

是的,Django 的 syncdb 只能在一定程度上帮助您。但纳什维加斯看起来真的很有前途!我喜欢同时使用 SQL 和 Python 来制作迁移脚本的想法。让我们只希望它与 Heroku 一起工作得很好,因为它可能应该。足够好的答案,谢谢@jpic! @Janne 您可能还想使用python mange.py inspectdb > models.py 手动更改模型。只要确保您不在 models.py 目录中,否则它将被覆盖。 我已经完全忘记了inspectdb。在某些情况下,它可能非常有用。感谢 Edwin 提醒我。【参考方案2】:

South 在 Heroku 上效果很好。

【讨论】:

很高兴看到您阅读了海报的问题,其中提到了它。 我不确定这是否是讽刺......他说 South 似乎是一个解决方案,我只是在验证它在 Heroku 上的效果很好。

以上是关于Heroku 和 Django 组合中的 Postgresql 更改与共享数据库的主要内容,如果未能解决你的问题,请参考以下文章

读取和写入存储在 aws s3 (Heroku + Django) 中的数据库文件

Heroku 不会在 Django 上收集静态数据,但告诉它确实如此

如何解决 Heroku 上托管的 django 项目中的迁移问题?

.env 文件中的环境变量在 django、heroku 的本地迁移期间不可用

heroku中的django应用程序出现工作超时错误

传输数据 | Django Heroku