https://www.xin3721.com/eschool/pythonxin3721/

一、数据库中时间类型

1.三种时间类型:DateTimeField、DataField、TimeField三种类型;在使用之前需先导入import django.utils.timezone包

2.该三种类型分别对应这Datetime、Data、Time三种对象;

3.时间类型,三个属性,auto_now_add、auto_now、default;这三种不能同时存在;auto_now_add在数据生成时,填入当前时间;

auto_now在数据时更新时,时间更新;default=timezone.now默认当前时间;

BOOK

id

title

price

publisher(ForeignKey)

Publisher

id

name

addr

Author

id

name

sex

birthday

book(m2m)

author_book

id

author_id

book_id

二、字段参数

1.字段参数:

null:表示字段是否可以为空;

unique:表示字段是否唯一;

db_index:给字段设置索引;

default:给字段设置默认值;

2.时间字段独有的参数

auto_now_add:生成数据时生成数据;

auto_now:每次更新数据时更新数据;

3.关系字段参数

to:要关联的表

to_field:要设置关联的字段,一般不用设置,默认情况下为关联另一张表里面的主键;

related_name:代替反向操作的 '表名_set'

反向操作时,

例如:未设置该参数情况下,Publisher.objects.get(id=1).book_set.all()

设置了related_name='stu'(BOOK表里面);Publisher.objects.get(id=1).stu.all()

related_query_name:对反向操作的queryset时,用来'表名_set'指定里面的 '表名'

db_constraint:取消外键约束,默认为开启约束True;2.0版本以后需要显示的声明;

on_delete:对级联操作的一些设定:(针对ForgineKey/onetoone特有),db_constraint=False;

models.CASCADE:删除关联数据,与之相关联的数据也一并删除;

models.NOTHING:删除关联数据,引发IntegrityError;

models.PROTECT:删除关联数据,报错ProtectedError;

models.SET_NULL:删除关联数据, 与之关联的数据改为null;×为测通 报改变表结构

models.SET_DEFAULT:删除关联数据, 与之关联数据改为默认值(前提外键设置默认值);

models.SET:删除关联数据,

a. 与之关联的值设置为指定值,设置:models.SET(值)

b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

4.manytomany关系

manytomany表的关系维护是通过第三张表author_book来维护的;

manytomany关系涉及三张表:author表、book表、author_book表;

三张表的关系建立(主要针对第三张表author_book)三种形式:(第三张表怎么创建[手动/自动],关联关系怎么创建[手动/自动])

方法一:Manytomany正常指定;

方法二:自己指定第三张表,通过ForeginKey来指定;自动创建关联关系

class Book(models.Model):

title = models.CharField(max_length=32, verbose_name="书名")

class Author(models.Model):

name = models.CharField(max_length=32, verbose_name="作者姓名")

# 自己创建第三张表,分别通过外键关联书和作者

class Author2Book(models.Model):

author = models.ForeignKey(to="Author")

book = models.ForeignKey(to="Book")

class Meta:

unique_together = ("author", "book")

方法三:自己指定第三张表,并通过 manytomany指定关联:手动创建关联关系;

class Book(models.Model):

title = models.CharField(max_length=32, verbose_name="书名")

# 自己创建第三张表,并通过ManyToManyField指定关联

class Author(models.Model):

name = models.CharField(max_length=32, verbose_name="作者姓名")

books = models.ManyToManyField(to="Book", through="Author2Book", through_fields=("author", "book"))

# through_fields接受一个2元组('field1','field2'):

# 其中field1是定义ManyToManyField的模型外键的名(author),field2是关联目标模型(book)的外键名。

class Author2Book(models.Model):

author = models.ForeignKey(to="Author")

book = models.ForeignKey(to="Book")

class Meta:

unique_together = ("author", "book")

python3数据库表关联_Django中数据库操作|python3教程|python入门|python教程相关推荐

  1. python修改数据库表结构_python中数据库的相关操作-pymysql

    python3中可以使用库pymysql 数据准备: 搭建一个数据库,我是在docker下搭建的Mysql(端口号是3306,账号是root,密码123456) 建立数据库test_db,表TB_St ...

  2. 第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档

    一.目标 下图是我们要实现的目标: 二.实现 原理非常简单,首先制作样式模版,可以参照文章2,将排版好的Word另存为html,然后复制粘贴到aspx页面中,然后从数据库读取表以及字段信息,动态的插入 ...

  3. Python3.x的mysqlclient的安装、Python操作mysql,python连接MySQL数据库,python创建数据库表,带有事务的操作,CRUD

    1.数据库操作 1.1准备工作: 1.安装一个mysql数据库软件 2.创建一个数据库,test 3.在python的环境安装一个模块: MySQLdb 1.2 安装mysql的连接包 第一种:工具安 ...

  4. MySQL数据库的终结_python中数据库的操作终结

    1.什么是数据库: 数据库是按照数据结构来组织存储和管理数据的仓库 2.mysql用户设置: (1).进入数据库:mysql -u root -p 然后输入密码:xxxxx (2).里面有个user表 ...

  5. 创建mysql数据库 表_MySQL:创建数据库和数据表操作

    1.使用SQL创建数据库,数据库名:studentDB,如果数据库studentDB已存在,那么,先删除再创建. DROP DATABASE IF EXISTS StudentDB ;-----如果存 ...

  6. python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM

    本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...

  7. php mysql oracle数据库表结构图_创建数据库表

    数据库的作用:1.有结构的存储大量数据.2.有效保持数据的一致性.3.方便智能的分析,产生新的有用的信息.4.满足应用的共享和安全的要求. 关系型数据库的基本组成:一个数据库是由一组数据表(table ...

  8. mysql数据库表类型设置_mysql数据库表的类型介绍

    目录 前言 之前我们讲了下载安装数据库,还有如何卸载(虽然直接重装系统就好) 那么现在让我们来讲讲 """ 1.数据库与表的剩余操作 编码配置.引擎介绍 2.数据库字段的 ...

  9. mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制

    #####-------------mysql数据备份以及表间数据的复制-------------------##### ##----------------我的mysql学习(二)--------- ...

最新文章

  1. OpenGL学习总结
  2. JavaScript八张思维导图
  3. “nvinfer1::ILogger”: 不能实例化抽象类
  4. boost::graph::distributed::mpi_process_groupboost::graph::用法的测试程序
  5. UOJ #579. 树上的颜色
  6. 数据中心布线系统的整体规划
  7. Spring Data 分页和排序 PagingAndSortingRepository的使用(九)
  8. 网站开发与服务器匹配,合格的网站开发员应当深入考虑站点框架搭建与SEO优化的关系...
  9. linux c程序面试题,嵌入式linux面试题解析(二)——C语言部分一
  10. [20个项目学会BBC micro:bit编程] 15-超声波测距实验
  11. 宝塔如何备份网站_宝塔备份网站怎样还原_服务器备份数据恢复教程
  12. 解读戴尔,惠普和思科的“三角关系”
  13. pytorch中模型结构图的可视化
  14. 怎么套dedecms(织梦cms)模板
  15. Spring中AOP及ReflectiveMethodInvocation逻辑简析
  16. 计算机存储单位字节(Byte)以及单位之间的转换
  17. FastText文本分类以及生成词向量
  18. YOLOv5 + Tesseract-OCR 实现车牌号文本识别
  19. 【PS】61款中国风古典背景水墨山水古风韵味PSD分层设计素材
  20. 安装 xorg-macros

热门文章

  1. oracle重载操作符的例子
  2. Struts 2(一):初识Struts
  3. ASP.NET比较常用的26个性能优化技巧
  4. 如何快速是DNS修改生效
  5. 『精品批处理』一个漂亮的进度条源码
  6. MIT、哈佛合作,这个研究让神经网络认清自己“几斤几两”!
  7. ARM嵌入式开发之JTAG与SWD接口
  8. numpy中的matrix矩阵处理
  9. 写给初学者的深度学习教程之 MNIST 数字识别
  10. qt创建线程和退出线程