首页 > 数据库 >Flask 学习-84.Flask-SQLAlchemy 一对多关系级联删除

Flask 学习-84.Flask-SQLAlchemy 一对多关系级联删除

时间:2022-10-03 21:23:56浏览次数:61  
标签:SQLAlchemy addresses 删除 Flask db person Address backref 84

前言

一对多关系,当删除主表数据的时候,关联表数据一起删除掉

一对多

模型设计

class Person(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(50))
    addresses = db.relationship('Address', backref='person', cascade="all,delete")


class Address(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(50))
    person_id = db.Column(db.Integer, db.ForeignKey('person.id'))

主要是在 relationship 加一个cascade="all,delete" 属性

其它关联删除方式

    ###  只删除父级,子不影响
    # 1. addresses = db.relationship('Address', backref='person',  passive_deletes=True)

    ###  子级跟随删除
    # 2. addresses = db.relationship('Address', backref='person', cascade="all, delete-orphan")
    # 3. addresses = db.relationship('Address', backref='person', cascade="all, delete")

    ##  父级删除,子级不删除,外键更新为 null
    # 4. addresses = relationship("Address", backref = backref("child"))

新增与删除

新增数据

        person = Person(name='yoyo')
        person.addresses = [
            Address(email='[email protected]')
        ]
        db.session.add(person)
        db.session.commit()  # 提交

删除Person 表数据,关联表一并删除

        p = Person.query.filter_by(name='yoyo').first()
        db.session.delete(p)
        db.session.commit()

标签:SQLAlchemy,addresses,删除,Flask,db,person,Address,backref,84
From: https://www.cnblogs.com/yoyoketang/p/16751295.html

相关文章

  • 如何在阿里云服务器搭建flask
    下载flask不用我多说了,pip3installflask 今天在阿里云的服务器上测试一个Flask程序,命名指定了ip:0.0.0.0,port:5000,但是外网IP确怎么也访问不了网页 上网上好个查,发......
  • 「浙江理工大学ACM入队200题系列」问题 K: 零基础学C/C++84——奇偶ASCII值判断
    本题是浙江理工大学ACM入队200题第八套中的K题我们先来看一下这题的题面.题面题目描述任意输入一个字符,判断其ASCII是否是奇数,若是,输出YES,否则,输出NO;例如,字符A的AS......
  • P3384 【模板】轻重链剖分/树链剖分
    【模板】轻重链剖分/树链剖分题目描述如题,已知一棵包含\(N\)个结点的树(连通且无环),每个节点上包含一个数值,需要支持以下操作:1xyz,表示将树从\(x\)到\(y\)结点......
  • 洛谷 P4840 解题报告
    洛谷P4840解题报告STEP1.题目大意求字符串\(S\)的所有循环同构中本质不同的回文子串数量的最大值。数据范围$|S|\leq1.5e6$STEP2.思路分析看到回......
  • 轻量级Web框架Flask——Web表单
    安装Flask-WTF及其依赖可使用pip安装pipinstallflask_wtf配置要求应用配置一个密钥。密钥是一个由随机字符构成的唯一字符串,通过加密或签名以不同的方式提升应用的......
  • flask获取硬件资源信息
    1.获取gpu信息[root@ks-devopspython]#catgpu_info.pyimportpynvmlUNIT=1024*1024defGpuInfo():pynvml.nvmlInit()#初始化gpuDeriveInfo=py......
  • P1848 [USACO12OPEN]Bookshelf G
    简要题意给你\(N\)本书\((h_i,w_i)\),你要将书分成任意段(顺序不能改变),使得每一段\(j\)中\(\sum\limits_{i\inj}w_i\leqL\),段\(j\)的代价为\(\max\limits_{i......
  • flask后端简单demo
    1、flaskdemofromflaskimportFlask,Blueprint,requestfromflask_sqlalchemyimportSQLAlchemyapp=Flask(__name__)#数据库app.config['SQLALCHEMY_TRACK......
  • flask基础知识
    1、flask微服务含义“微”并不代表整个应用只能塞在一个Python文件内,当然塞在单一文件内也没有问题。“微”也不代表Flask功能不强。微框架中的“微”字表示Flask......
  • P4084 [USACO17DEC]Barn Painting G
    #include<bits/stdc++.h>usingnamespacestd;constlonglongmod=1e9+7;classDP_on_tree{public: #definelllonglong lln,k; llfree[100001]; llf......