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重定向命令):

  • 相关阅读:
    Python 安装Twisted 提示python version 2.7 required,which was not found in the registry
    Openfire Strophe开发中文乱码问题
    css div 垂直居中
    How to create custom methods for use in spring security expression language annotations
    How to check “hasRole” in Java Code with Spring Security?
    Android 显示/隐藏 应用图标
    Android 当媒体变更后,通知其他应用重新扫描
    文件上传那些事儿
    专题:点滴Javascript
    主流动画实现方式总结
  • 原文地址:https://www.cnblogs.com/xiami303/p/2511503.html
Copyright © 2011-2022 走看看