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 项目中的迁移问题?