1

嗨,我有一些使用 github 托管在 pythonanywhere 的应用程序,现在我在本地机器上对应用程序进行了一些改进,但我不知道如何更新影响数据库的在线应用程序。

提前致谢?

4

1 回答 1

2

您的意思是您已经对本地 PC 上的数据库进行了更改(新的或修改的models.py)并且您想知道如何将它们应用到 PythonAnywhere 上的现有数据库而不破坏现有数据?

这取决于您使用的 django 版本。对于 1.6 及更早的版本,您将使用名为south的工具。对于更新的版本,1.7 及更高版本,您将使用内置的迁移框架

如果您使用的是 django-migrations,那么它应该非常简单并且“正常工作”。将您的最新代码下载到 PythonAnywhere,激活您的 virtualenv,然后运行

python manage.py migrate 

如果您需要使用 South,则要复杂一些。你必须做这样的事情:

  1. 返回与当前存在于 pythonanywhere 上的代码匹配的提交
  2. 对于您的每个应用程序,运行python manage.py schemamigration appname --initial
  3. 现在查看您的代码的最新版本
  4. 对于您的每个应用程序,运行python manage.py schemamigration appname --auto
  5. 将新的迁移文件提交到您的存储库中
  6. 在 PythonAnywhere 上拉下最新的代码
  7. 对于您的每个应用程序,运行python manage.py mygrate appname --fake 001
  8. 然后运行python manage.py migrate

南方文档中的更多信息。这是相当棘手的事情,所以先备份你的数据库!

但希望你使用的是现代版本的 django,你可以用简单的方法做到这一点:)

于 2016-02-24T12:31:18.137 回答