python3数据库表关联_Django中数据库操作|python3教程|python入门|python教程
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教程相关推荐
- python修改数据库表结构_python中数据库的相关操作-pymysql
python3中可以使用库pymysql 数据准备: 搭建一个数据库,我是在docker下搭建的Mysql(端口号是3306,账号是root,密码123456) 建立数据库test_db,表TB_St ...
- 第100篇博文纪念 | C# 根据数据库表结构生成DOC数据库文档
一.目标 下图是我们要实现的目标: 二.实现 原理非常简单,首先制作样式模版,可以参照文章2,将排版好的Word另存为html,然后复制粘贴到aspx页面中,然后从数据库读取表以及字段信息,动态的插入 ...
- Python3.x的mysqlclient的安装、Python操作mysql,python连接MySQL数据库,python创建数据库表,带有事务的操作,CRUD
1.数据库操作 1.1准备工作: 1.安装一个mysql数据库软件 2.创建一个数据库,test 3.在python的环境安装一个模块: MySQLdb 1.2 安装mysql的连接包 第一种:工具安 ...
- MySQL数据库的终结_python中数据库的操作终结
1.什么是数据库: 数据库是按照数据结构来组织存储和管理数据的仓库 2.mysql用户设置: (1).进入数据库:mysql -u root -p 然后输入密码:xxxxx (2).里面有个user表 ...
- 创建mysql数据库 表_MySQL:创建数据库和数据表操作
1.使用SQL创建数据库,数据库名:studentDB,如果数据库studentDB已存在,那么,先删除再创建. DROP DATABASE IF EXISTS StudentDB ;-----如果存 ...
- python动态生成数据库表 orm_Python自动化 【第十二篇】:Python进阶-MySQL和ORM
本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增删改查表 权限 事务 索引 python 操作mysql ORM sql ...
- php mysql oracle数据库表结构图_创建数据库表
数据库的作用:1.有结构的存储大量数据.2.有效保持数据的一致性.3.方便智能的分析,产生新的有用的信息.4.满足应用的共享和安全的要求. 关系型数据库的基本组成:一个数据库是由一组数据表(table ...
- mysql数据库表类型设置_mysql数据库表的类型介绍
目录 前言 之前我们讲了下载安装数据库,还有如何卸载(虽然直接重装系统就好) 那么现在让我们来讲讲 """ 1.数据库与表的剩余操作 编码配置.引擎介绍 2.数据库字段的 ...
- mysql数据库表复制备份_mysql数据库的备份以及表格数据之间的复制
#####-------------mysql数据备份以及表间数据的复制-------------------##### ##----------------我的mysql学习(二)--------- ...
最新文章
- OpenGL学习总结
- JavaScript八张思维导图
- “nvinfer1::ILogger”: 不能实例化抽象类
- boost::graph::distributed::mpi_process_groupboost::graph::用法的测试程序
- UOJ #579. 树上的颜色
- 数据中心布线系统的整体规划
- Spring Data 分页和排序 PagingAndSortingRepository的使用(九)
- 网站开发与服务器匹配,合格的网站开发员应当深入考虑站点框架搭建与SEO优化的关系...
- linux c程序面试题,嵌入式linux面试题解析(二)——C语言部分一
- [20个项目学会BBC micro:bit编程] 15-超声波测距实验
- 宝塔如何备份网站_宝塔备份网站怎样还原_服务器备份数据恢复教程
- 解读戴尔,惠普和思科的“三角关系”
- pytorch中模型结构图的可视化
- 怎么套dedecms(织梦cms)模板
- Spring中AOP及ReflectiveMethodInvocation逻辑简析
- 计算机存储单位字节(Byte)以及单位之间的转换
- FastText文本分类以及生成词向量
- YOLOv5 + Tesseract-OCR 实现车牌号文本识别
- 【PS】61款中国风古典背景水墨山水古风韵味PSD分层设计素材
- 安装 xorg-macros