我正在考慮使用Django作爲我開始的項目(fyi,基於瀏覽器的遊戲),我最喜歡的功能之一是使用syncdb
自動創建數據庫表基於我定義的Django模型(我似乎無法在其他任何框架中找到的功能)。 我已經想這是好得是真實的,當我看到這個在documentation:在Django中更改數據庫表
執行syncdb不會改變現有的表
執行syncdb只會創造尚未安裝哪些車型表。它永遠不會發出ALTER TABLE語句來匹配安裝後對模型類所做的更改。更改模型類和數據庫架構往往涉及某種形式的模糊,在這種情況下,Django的必須在正確的變化作出猜測。在這個過程中,關鍵數據可能會丟失。
如果您對模型進行了更改並希望更改數據庫表以匹配,請使用sql命令顯示新的SQL結構並將其與現有表模式進行比較以計算出更改。
似乎改變現有的表格將不得不「手工」完成。
我想知道什麼是做到這一點的最好辦法。想到兩種解決方案:
- 正如文檔所述,請在數據庫中手動進行更改;
- 執行數據庫備份,擦除它,再次創建表(使用syncdb,因爲現在它正在從頭開始創建表)並導入備份的數據(如果數據庫很大,這可能需要很長時間)
有什麼想法?
django-evolution似乎工作正常,謝謝!值得指出的是,必須從頭開始使用它(它不計算來自現有SQL的必要更改)。 – gatoatigrado 2009-09-07 18:57:17