Django修改model如何同步數據庫


1。首次創建model

在第一次新建model的時候,可以以下命令實現數據庫和工程里的model同步。

執行過程如下:(前提啊!!!一定要自己創建一個數據庫onlineShop,並在工程的settings.py里配置好,測試通過哦,不然這些命令找不到database)

事實上,第一次創建的時候還會創建一些系統表,在HeidiSql中查看創建的表的情況:

2.中途修改model

隨着需求的變動,model被修改的概率是大大的。但是之前的syncdb命令,已經不能滿足需要了。

這里必須使用sql本身的命令來完成,但是Django為我們提供了dbshell借口完成此類的model更新操作:

1. 使用sqlall查看模型新的 CREATE TABLE 語句。 查看新創建的字段:
$ python manage.py sqlall depotapp
BEGIN;
CREATE TABLE "depotapp_product" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(100) NOT NULL UNIQUE,
"description" text NOT NULL,
"image_url" varchar(200) NOT NULL,
"price" decimal NOT NULL,
"date_available" date NOT NULL
)
;
COMMIT;


2. 使用數據庫命令行工具,或客戶端工具,或者django提供的dbshell工具增加字段:
$ python manage.py dbshell
sqlite> begin;
sqlite> alter table depotapp_product add column date_available date not null default 0;
sqlite> commit;

3. 驗證數據庫:
$ python manage.py shell
>>> from depot.depotapp.models import Product
>>> Product.objects.all()
如果沒有異常發生,則可以在發布環境進行上述修改。

 

以上是在模型中增加一個屬性的步驟。其他對模型的修改可能還有:

刪除字段——drop column

刪除模型——drop table

刪除多對多關聯——drop table (自動生成的關聯表)

也需要參考上述的步驟進行。

 

注意:上述使用的是sqlite數據庫,若是使用mysql數據庫, 請保證mysql的路徑加到system的path里去。

如果不想使用dbshell,借助於Heidisql等可視化工具,找到對應的表如,對表寫query語句執行,也能達到效果。

 

補充一下:  如何保存sqlall的語句到本地(dos重定向命令):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM