2011-05-01 54 views
2

我已經在Django中對我的model.py進行了更改,現在我想同步這些更改。刪除表格並重新創建它們很好。然而,似乎沒有任何工作。我使用的sqlite3:Django sqlite - 如何更改架構

執行syncdb:僅適用於第一次,不改變

「蟒蛇manage.py SQL my_site」,然後執行syncdb:我認爲這將「重做」這一切,但仍表只有舊列(或者我假設,當我嘗試使用我的模型訪問表時出現錯誤)。

然後我覺得我可以直接訪問數據庫並以這種方式刪除表。但是,我不知道如何進入可以執行命令的數據庫。無法識別命令提示符鍵入sqlite3。我也嘗試過「python manage.py sql my_site」,但我再次得到消息說sqlite3無法識別。

對此提出建議?

+0

我想你張貼在錯誤的類別,請指定您正在使用的操作系統,也Django不會重新創建/更改第二次運行syncDB – 2011-05-01 18:34:33

回答

1

首先你必須安裝sqlite的命令行工具。在Ubuntu/Debian的,你可以簡單地做

sudo apt-get install sqlite3 

在Windows上,你可以從這裏下載:http://www.sqlite.org/download.html。找一個看起來像sqlite-shell-win32-xxx.zip的那個。

使用方法如下:

> sqlite3 /path/to/your/database 
;show some help 
.help 
; list all databases 
.databases 
; clear the contents of a table 
DELETE FROM <tablename>; 

還命令行參考請參見:http://www.sqlite.org/sqlite.html 和SQLite的SQL參考:http://www.sqlite.org/lang.html

使用「ALTER TABLE」sql命令,還可以添加列而不刪除表的全部內容。爲此,請比較sqlite3中.schema的輸出和manage.py sql my_site的輸出以找出需要添加的列。

一個例子:

ALTER TABLE "buildreport_series" ADD COLUMN "parameters" text 
0

使用Django內置的數據庫管理工具:

python manage.py dbshell 

及發行所需的SQL命令。 sql命令將只打印到標準輸出創建當前表所需的sql(由當前模型定義)。