2015-07-13 95 views
0

由於具體的歷史和技術原因,必須爲每個腳本運行創建一個新的SQLite數據庫,因此我們每天可能會有數百個這樣的數據庫。這些都是相同的類型,都有相同的表格。我們也有一個PostgreSQL主數據庫。Django:我如何構建應用程序以使用多個數據庫

Django應用程序必須能夠讀取和寫入兩種類型的數據庫。

我們應該如何構建應用程序和模式,使這是可能的:

  • 創建一個新的SQLite數據庫和創建(遷移)內爲每一個腳本運行的表。
  • 如果可能,請確保某些模型僅保存在SQLite中,而其他模型僅保存在PostgreSQL中。
  • 當我做Django遷移時,只有PostgreSQL模型發生變化。
+1

什麼是 「爲每運行腳本」 是什麼意思?在任何時候,有一個SQLite數據庫和一個PosgtreSQL數據庫? –

+0

每次腳本運行時,都應該創建一個新的SQLite數據庫,其中保存了腳本的結果。有數百個SQLite數據庫,每天都會添加新的數據庫。在任何時候,用戶可能會決定檢查這些數據庫中的任何一個,因此所有數據庫都必須可用。想象一下客戶歸檔,每個客戶都擁有自己的數據庫......但只有一個PostgreSQL數據庫。 –

回答

0

爲每個腳本運行創建一個新的SQLite數據庫並創建(遷移)表。

如果您設置的腳本爲management commands,那麼你可以通過自定義您的manage.pysettings.py文件來配置從例如ENV SQLite數據庫設置實現這一乏或命令行參數傳遞

也許你會包這一切在bash腳本,依稀有點像

export DB_NAME=this_script_run_id 
./manage.py syncdb 
./manage.py migrate 
./manage.py my_custom_command 

如果可能的話,請確保某些型號僅在PostgreSQL只保存在SQLite和他人。

https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#database-routers

當我做一個Django遷移,只有PostgreSQL的模式改變。

https://docs.djangoproject.com/en/1.8/topics/db/multi-db/#synchronizing-your-databases

相關問題