zoukankan      html  css  js  c++  java
  • django之模型类、迁移和数据库表之间的关系

    环境配置:ubuntu 16.04,Django 1.8.2,MySQL-python 1.2.5

    目的是为了了解模型类的定义和其对应数据库里面表的关系

    实测发现:

    1. 关于模型类和数据库里面的表关系,模型类里面定义的类属性是为了生成数据库里面的表结构使用的,类似mysql里面创建一个表。

    2. 一个模型类,对应着数据库里面的一个表。

    3. 一个类属性,对应着数据库表里面的一个字段

    4. 一个类属性的类型(如charfield),对应着数据库里面字段类型。

    5. 进入python manage.py shell运行的python
      shell环境,对模型类及其对象操作,类似对表及某个字段操作。注意:对象没有调用类属性,python也允许这么做。下面对象的属性和类属性同名主要是为了映射,知道往表哪个地方添加数据。

    6. 往表里面增加数据,类似数据库表的insert语句

      B = BookInfo()
      b.btitle = 'abc         
      b.save()
      
    7. 修改表数据,类似表的update操作

      B = BookInfo.objects.get(pk=1)     pk是主键 primarykehy        
      b.btitle ='abc'         
      b.save()
      
    8. 查询表

      BookInfo.objects.all()
      
    9. 删除表

      b.delete()      
      
      BookInfo.objects.all()   查看结果
      

    测试流程如下:
    一 虚拟环境下创建一个项目test4和应用booktest,项目test4使用mysql数据库里面的test数据库,此时test数据库为空



    二 创建模型类

    三 进行迁移,并观察数据库test中表变化,发现

    1 生成迁移文件:根据模型类生成sql语句,迁移文件被生成到应用的migrations目录

    2 执行迁移:执行sql语句生成数据表

    四 进入python manage.py shell运行后的python shell环境,对模型类及对象进行操作,观察表变化
    通过面向对象方法,添加对象属性进而往表添加数据


    为了在面向对象过程看的更直观,在模型类里面新添str方法

    通过面向对象方法,修改对象属性而修改表,


    通过面向对象方法,删除对象进而删除表中该对象对应一条数据

  • 相关阅读:
    素数线性筛优化
    C++如何求程序运行时间
    02-线性结构4 Pop Sequence
    02-线性结构3 Reversing Linked List
    STL--priority_queue--自定义数据类型
    02-线性结构2 一元多项式的乘法与加法运算
    Linux——安装OpenSSH服务(CentOS系统默认安装了openssh)
    Linux——Vim快速查找功能
    Xmanager——连接linux(deepin)时提示ssh服务器拒绝了密码,请再试一次
    解决CentOS7关闭/开启防火墙出现Unit iptables.service failed to load: No such file or directory.
  • 原文地址:https://www.cnblogs.com/silence-cc/p/8979041.html
Copyright © 2011-2022 走看看