zoukankan      html  css  js  c++  java
  • 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重定向命令):

  • 相关阅读:
    Servlet接口实现类开发步骤
    Servlet概述
    Web服务器之HTTP协议与Tomcat服务器
    vant中van-picker选项插入图片
    排序算法-插入排序
    排序算法-快速排序
    排序算法-冒泡排序
    浅谈C#中Dictionary的实现。
    设计模式(23)-备忘录模式
    设计模式(22)-访问者模式
  • 原文地址:https://www.cnblogs.com/xiami303/p/2511503.html
Copyright © 2011-2022 走看看