三十四:数据库之SQLAlchemy外建及四种约束
使用SQLAlchemy创建外建,只需要在子表的字段中指定此字段的外建是哪个表的哪个字段即可,字段类型需和父表下该字段的类型保持一致



使用ondelete指定约束, 外建约束有以下几种:
1、RESTRICT:删除父表数据时,如果子表有数据在使用该字段的数据时,会阻止删除(默认为此约束)
2、NO ACTION:在MySQL中,同RESTRICT
3、CASCADE:级联删除,删除父表的某一条数据时,子表中使用该外建的数据也会被删除
4、SET NULL:父表数据被删除,删除父表的某一条数据时,子表中使用该外建的数据设置为NULL
1、RESTRICT:删除父表数据时,如果子表有数据在使用该字段的数据时,会阻止删除


2、NO ACTION:在MySQL中,同RESTRICT


3、CASCADE:级联删除,删除父表的某一条数据时,子表中使用该外建的数据也会被删除



删除父表的数据



4、SET NULL:父表数据被删除,删除父表的某一条数据时,子表中使用该外建的数据设置为NULL(前提是字段建表的时候没有设置nullable=False)



三十四:数据库之SQLAlchemy外建及四种约束的更多相关文章
- 三十七:数据库之SQLAlchemy外建之多对多关系
		
准备工作 from sqlalchemy import create_engine, Column, Integer, String, Float, Text, ForeignKeyfrom sqla ...
 - 三十五:数据库之SQLAlchemy外建之一对多关系
		
准备工作 from sqlalchemy import create_engine, Column, Integer, String, Float, Text, ForeignKeyfrom sqla ...
 - 三十六:数据库之SQLAlchemy外建之一对一关系
		
relationship()的uselist参数默认为True,即一对多,如果要一对一,则需让uselist=False 准备工作 from sqlalchemy import create_engi ...
 - 四十:数据库之SQLAlchemy实现排序的三种方式
		
SQLAlchemy实现排序有三种方式一:order_by:查询的时候使用此方式根据某个字段或模型下的属性进行排序二:模型定义的时候,指定排序方式三:一对多的时候,relationship的order ...
 - 三十:数据库之定义ORM模型,并映射到数据库
		
连接数据库操作 sqlalchemy映射步骤: 1.创建ORM模型,这个模型必须继承sqlalchemy提供的基类2.在这个ORM模型中创建一些属性,与表中的字段一一映射,这些属性必须是sqlalch ...
 - 三十一:数据库之SQLAlchemy属性常用数据类型和Column常用参数
		
SQLAlchemy属性常用数据类型 Column常用参数
 - 三十三:数据库之SQLAlchemy.filter常用的过滤条件
		
准备数据 等于 不等于 like(区分大小写,模糊查询).ilike(不区分大小写) in not in(~,取反) 字段为空 不为空 and or
 - mysql表查询、多表查询(增强查询的使用)子查询、合并查询,外连接,mysql5种约束,自增长
		
一.查询加强 1.在mysql中,日期类型可以直接比较,需要注意格式 2.%:表示0到多个字符, _:表示单个字符 exp:显示第二个字符为大写O的所有员工的姓名和工资 select name fr ...
 - mysql 外键的几种约束
		
restrict方式 同no action, 都是立即检查外键约束 --限制,指的是如果字表引用父表的某个字段的值,那么不允许直接删除父表的该值: cascade方式 在父表上update/de ...
 
随机推荐
- 格式化json扩展
			
json-handle 直接在chrome应用商店搜索JSON-handle或者去github搜索可用插件即可
 - tornada-数据库
			
数据库 torndb安装 连接初始化 执行语句 execute execute_rowcount 查询语句 get query 与Django框架相比,Tornado没有自带ORM,对于数据库需要自己 ...
 - glsl:error C1105: cannot call a non-function
			
今天写的shader编译过程中报了这个错误,而且错误行数是0.原因怎么找也找不到.后来发现原来是normalize方法写成了了normal正好和函数的形参名字一样. 特地记录一下.
 - ubuntu下安装tensorflow-gpu版本过程
			
我之前已经安装了cpu-only版的tensorflow,所以现在要先把原先的tf卸载 sudo pip uninstall tensorflow sudo pip3 install tensorfl ...
 - 【bzoj 4025 改编版】graph
			
题意 给定一张 \(n\) 个点 \(m\) 条边的无向图,问删去每个点后,原图是不是二分图.输出一个长度为 \(n\) 的 \(\text{01}\) 串表示答案. 多组数据. \(T\le 5,\ ...
 - string::empty
			
bool empty() const noexcept;注:判断string对象是否为空,为空返回true #include <iostream>#include <string&g ...
 - @Mapper和@Repository的区别
			
参考博客地址 https://www.cnblogs.com/wangshen31/p/8735037.html 相同点 两个都是注解在Dao上 不同 @Repository需要在Spring中配置扫 ...
 - button 文字图片上下/左右经常会用到,记录一下
			
上下: self.button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;//使图片和文字水平 ...
 - 【转载】关于java 的InputStream和OutputStream的理解
			
关于InputStream和OutputStream的输入输出方向的理解 InputStream输入类,首先需要读取的内容转化成输入流,再从它那里进行读取,先关联源:之后过程中关联目的,这样形成了流: ...
 - qt5--鼠标操作
			
#include "mylabel.h" #include <QDebug> #include <QPointF> #include <QPoint& ...