我需要一些关于将Django更新(特别是数据库更新)从我的开发服务器推送到生产服务器的建议。我相信更新脚本,文件等很容易 - 只需将新文件从开发服务器复制到生产服务器即可。但是,数据库更新是我不确定的。
对于Django,我在创建初始Web应用程序时一直使用South
来更改数据库架构。如果我在生产服务器上有一些停机时间进行更新,我可以将所有文件复制到生产服务器上。这些将包括和更改描述数据库表的models.py
文件。然后我可以执行python manage.py schemamigration my_app --auto
然后python migrate my_app
根据我复制的新文件/ models.py
更新数据库。
这是一个好的解决方案还是有更合适的方法可以将数据库从开发服务器更新到生产服务器?
你的想法?
由于
答案 0 :(得分:1)
实际上,python manage.py schemamigration my_app --auto
只会根据models.py
中的更改创建迁移。要将迁移实际应用于数据库,您需要运行python manage.py migrate my_app
。另一种选择是在开发服务器上创建迁移(通过运行schemamigration
),然后将迁移文件复制到生产服务器并通过运行migrate
来应用迁移。
当然,拥有源代码存储库会比复制文件更好。您可以在开发服务器上创建迁移,将它们提交到存储库,在生产服务器上从存储库中提取新文件,最后应用迁移。