Flask数据库模型之数据库模型关系反向映射(四)

Flask数据库关系反向映射

db.relationship 当前字段用于一对多或者多对多反向映射:

  • 第一个参数是 映射向的模型名称
  • Secondary 参数 指向多对多的关系表
  • backref 参数指向反向映射字段,反向映射表通过该字段查询当前表内容
  • lazy
    select 访问该字段时候,加载所有的映射数据
    joined 对关联的两个表多表和关系表进行join查询
    dynamic 不加载数据
    通俗了说,select就是访问到属性的时候,就会全部加载该属性的数据。joined则是在对关联的两个表进行join操作,从而获取到所有相关的对象。dynamic则不一样,在访问属性的时候,并没有在内存中加载数据,而是返回一个query对象, 需要执行相应方法才可以获取对象,比如.all().下面结合实例解释这几个的使用场景
一对多关系反向映射

例:
课程和老师是一对多

  • 一个课程有多位授课老师
  • 一个授课老师只可以完成一门课的授课

在这里插入图片描述
给两个表插入一条数据
在这里插入图片描述

在这里插入图片描述

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

BASE_DIR = os.path.abspath(os.path.dirname(__file__))

# app.config返回类字典对象,里面用来存放当前app实例的配置
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///"+os.path.join(BASE_DIR,"Student.sqlite")
app.config["SQLALCHEMY_COMMIT_ON_TEARDOWN"] = True
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

# 关联sqlalchemy和flask应用
db = SQLAlchemy(app)

# 创建数据库回话,基于会话进行增删改查
session = db.session()

class BaseModel(db.Model):
    __abstract__ = True # 抽象表为True,代表当前类为抽象类,不会被创建
    id = db.Column(db.Integer,primary_key=True,autoincrement=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孜孜孜孜不倦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值