2015-04-16 90 views
3

我正在Django 1.8中使用Postgres數據庫。Django網站:在哪裏存儲SQL設置命令?

我的網站包含一個大型數據集,我想創建一些額外的Postgres索引以加快某些查詢(超出您可以使用db_index在模型文件中執行的操作)。我還需要創建一些物化視圖。

我有SQL命令來執行此操作,在psql腳本中。

我的問題是在哪裏存儲這些SQL命令,因此它們很容易作爲整個站點設置的一部分運行(我想讓它易於部署和初始化站點)。

現在我只是有一個自述說:「不要忘記在創建數據庫後運行setup.psql !!!」這並不理想。

在閱讀this article時,我發現作者建議將索引創建命令放入遷移文件,因此它們作爲初始python manage.py migrate的一部分運行以設置數據庫。

這是明智的嗎?有什麼缺點嗎?

回答

3

這是明智的,這是我如何做到的。

如果您在已經擁有索引和視圖的數據庫上運行新遷移,可能會導致遷移崩潰,所以除了可能(因爲這是一個現有項目,據我瞭解),我沒有看到任何缺點,因此請確保捕捉異常。

0

也許你可以使用a post migrate signal來運行你的命令。我從來沒有使用它,但我在以前的項目中使用了post syncdb signal,但現在已經棄用。在我的情況下,沒有缺點。