我正在使用Postgres数据库在Django 1.8中工作。
我的网站包含一个大型数据集,我想创建一些额外的Postgres索引来加速某些查询(超出您在模型文件中使用db_index
所能做的事情)。我还需要创建一些物化视图。
我在psql脚本中有SQL命令来执行此操作。
我的问题是存储这些SQL命令的位置,以便它们可以作为整个站点设置的一部分轻松运行(我希望能够轻松部署和初始化站点)。
现在我只是有一个自述文件说"在创建数据库后不要忘记运行setup.psql !!!"这不是理想的。
在阅读this article时,我发现作者建议将索引创建命令放入迁移文件中,因此它们将作为初始python manage.py migrate
的一部分运行以设置数据库。
答案 0 :(得分:3)
这是明智的,我就是这样做的。
除了可能(因为这是我理解的现有项目)之外,我没有看到任何缺点如果您在已经拥有索引和视图的数据库上运行新迁移,这可能会导致您的迁移失败,所以make一定要抓住例外。
答案 1 :(得分:0)
也许您可以使用a post migrate signal来运行命令。我从未使用它,但我在之前的项目中使用了post syncdb signal,但现在已经弃用了。在我的情况下,没有任何缺点。