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方法

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

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

原文地址:https://www.cnblogs.com/silence-cc/p/8979041.html

时间: 2024-12-19 18:53:08

django之模型类、迁移和数据库表之间的关系的相关文章

django的模型类管理器-----------数据库操作的封装

模型实例方法 str():在将对象转换成字符串时会被调用. save():将模型对象保存到数据表中,ORM框架会转换成对应的insert或update语句. delete():将模型对象从数据表中删除,ORM框架会转换成对应的delete语句. 模型类的属性 属性objects:管理器,是Manager类型的对象,用于与数据库进行交互. 当没有为模型类定义管理器时,Django会为模型类生成一个名为objects的管理器,自定义管理器后,Django不再生成默认管理器objects. 管理器是D

数据类与生成数据库表所需组成

Entityframework属于ORM框架,作用为:将数据类与数据库表关联起来. 数据类与生成数据库表所需组成: 普通类(实体类):定义了属性字段+限制 数据上下文类:继承了DbContext,(各实体类的集合).作用:生成数据库和操作数据库. 配置文件中.连接数据库的字符串.注意name必须与数据上下文类的派生类名称相同. 控制器中,数据库上下文类的实例化,然后使用给对象方可生成数据库.

Hibernate<二> 映射基础 单个持久类与单个数据库表映射

一.单个持久化类与单个数据库表映射基础 1.在Hibernate应用中,持久化类的访问方法有两个调用者: ①.Java应用程序:调用User对象的getXXX方法,读取User信息.调用setXXX方法,把用户输入的user信息写入到user对象中. ②.Hibernate:调用User对象的getXXX方法,读取user信息,把它保存到数据库调用user对象的setXXX方法,把从数据库中读出的user信息写入到user对象中.Hibernate的session在执行save().update

MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于excel),用来存放多行内容/多条记录 5. 记录:事物一系列典型的特征 6. 数据:描述事物特征的符号 MySQL数据库就是一个套接字软件,用来管理其他机器上的数据文件 MySQL介绍: MySQL是一个关系型数据库管理系统:就是一个基于socket编写的C/S架构胡软件 客户端软件 mysql

第四天,表与表之间的关系,一对多,多对多,查询

※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE variable_name LIKE 'character%'; 解决MySQK的中文乱码:character_set_client,character_set_connection和character_set_results这三者必须一致(GBK,GB2312,UTF8这三者都可以,但若采用其中一种则3

MySQL---数据库从入门走上大神系列(四)-子查询、表与表之间的关系

本篇博客讲解(子查询)非相关子查询/相关子查询,一对一,一对多,多对一,多对的的关系! 准备: 首先我们创建一列sex.再为部分行设置好值0(女)或者1(男): delete from stud where age=26; 删除年龄为26的行. update stud set sex='1' where saddress like '湖南%'; 将地址中湖南开头的人的的sex修改为1. update stud set sex='0' where age>=30 and sex is null;

mysql表与表之间的关系(多对多,一对多)

#创建数据库CREATE DATABASE day15;#使用USE day15;#创建表CREATE TABLE test1( id INT PRIMARY KEY AUTO_INCREMENT,#这是主键 num INT UNIQUE, #这个唯一键不起作用? NAME VARCHAR(22));#存入数据INSERT INTO test1(NAME) VALUES('aaa'); #删除数据但是不重置自动增长数DELETE FROM test1; #删除数据重置行数(相当于删除掉整个表,然

约束条件 ,表与表之间的关系 和多表联合查询***

一.约束条件    为了确保数据的完整性 可以给列加上约束条件    完整性的分类:        1.实体完整性        2.域完整性        3.引用完整性    1.实体完整性        实体:即表中的一行(一条)记录 代表一个实体 entity        实体完整性的作用:标识每一行数据不重复        约束类型:            1.1 主键约束(primary key)            1.2 唯一约束(unique)            1.3

SSAS的维度表之间的关系只能有一个不能有多个

我们在SSAS中创建维度的时候,有时候可能一个维度需要用到多个表的字段作为维度属性,那么这多个表之间势必存在关联关系,但是切记维度表之间的关联关系有且只能有一个不能有多个,下面我们来看一个例子. 现在我们创建了一个维度Customer,由于该维度中的属性除了用到Customer表的字段以外,还要用到了Geography表的字段,所以Customer用到了两个表. 但是Customer表和Geography表之间现在存在两个依赖关系 其中一个关系是Customer.CustomerKey到Geog