Flask-SQLAlchemy(一) 一对一关系

2023-11-08

前言

课程中经常需要进行web开发,往往是采用Flask框架。建立数据库时就避免不了Flask-SQLAlchemy的使用,此文章将记录创建关系表的过程,方便日后回顾以及大家交流讨论。


一对一关系

下面的一对一关系以用户和身份证为例:

首先创建一个用户表:

class User(db.Model):
    __tablename__= 'user'
    
    id = db.Column(db.Integer,primary_key=True)
    name = db.Column(db.String(200))
    card = db.relationship('Card',uselist=False,backref=‘user’)

下面创建身份证表:

class Card(db.Model):
    __tablename__= 'card'
    
    id = db.Column(db.Integer,primary_key=True)
    cardnum = db.Column(db.String(200))
    user_id = db.Column(db.Integer,db.ForeignKey('user.id'))

关系很简单:一个用户对应一张身份证,一张身份证属于一个用户

Card表中添加了一个外键user_id, 通过db.ForeignKey(“user.id”)与主表绑定。User表中建立一个关系(relationship),有了此关系就可以通过user.card来找到用户对应的身份证的信息而backref=‘user’表示反向的关系,即也可以通过card.user来找到此身份证对应的用户信息。一对一关系中,需要设置relationship中的uselist=Flase,这里是为了与多对多关系区分,暂且记住。具体区别为card.user由于没有使用uselist=False禁用列表,故生成的是一个列表,需要遍历才能获取信息。而user.card会直接返回信息。

重点是

card = db.relationship('Card',uselist=False,backref=‘user’)

这一指令,users和cards互相依存,均为属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Flask-SQLAlchemy(一) 一对一关系 的相关文章

随机推荐

  • ubuntu20.04下载谷歌浏览器

    第一步 打开终端输入 wget https dl google com linux direct google chrome stable current amd64 deb 第二步 在终端中输入 sudo apt install goog
  • 关于临时表空间问题总结

    oracle经常需要查数据库临时表空间大小 使用率 加表空间等 这里总结临时表空间相关的语句 0 查看实例的临时表空间 SELECT FROM dba tablespaces t where t CONTENTS TEMPORARY SEL
  • 移动端通用404页面

  • 【分享NVIDIA GTC 23大会干货】在 GPU 上使用 Video Codec SDK,CV-CUDA 和 TensorRT 加速现代云上视频应用 [SE51229]

    在 GPU 上使用 Video Codec SDK CV CUDA 和 TensorRT 加速现代云上视频应用 前言 基于现代 的视频流水线架构与运用场景 NVIDIA 视频处理的工具集 1 视频编解码工具 2 前后处理部分 CV CUDA
  • Python中的魔术方法详解

    介绍 在Python中 所有以 双下划线包起来的方法 都统称为 Magic Method 中文称 魔术方法 例如类的初始化方法 init Python中所有的魔术方法均在官方文档中有相应描述 但是对于官方的描述比较混乱而且组织比较松散 很难
  • Llama2 指令精调脚本

    指令精调脚本 重要提示 该代码仅适用于特定PEFT版本 运行脚本前请从源码安装commit id为13e53fc的Peft 如果使用其他版本的PEFT或修改部分训练参数设置 如不使用deepspeed 不能保证模型可以正常训练 运行前确保拉
  • 独显和集显设置,双显卡工作及cuda计算

    有时候我们会碰到插上独显后 想用集显却不显示了 不是电脑出问题了 需要在BIOS中进行设置 1 确保在BIOS中设置集显和独显都予以使用 部分板卡可能不支持 2 此时显示器可以接在集显上 独显单独做计算 确保都有合适的驱动 3 多显卡计算时
  • redis 消息的发布与订阅 持久化

    12 redis 消息的发布与订阅 12 1 发布信息 命令 publish channle message 12 2 订阅信息 命令 subscribe channle1 channel2 12 3 注意 一 接收消息 必须先订阅消息 二
  • QT添加图标、打包应用程序

    1 添加应用程序图标 为可执行文件添加 icon 图标的方法很简单 将事先准备好的 icon 图标拷贝到程序对应的文件夹中 然后在 pro 工程文件内添加如下指令 RC ICONS logo ico 其中 logo ico 是图标文件的名称
  • adworld web训练营刷题总结1

    a d w o r l d adworld adworld
  • 网络编程之什么是计算机网络

    引入 1 地球村 也译为世界村 global village 对地球的一种比喻说法 现代科技的迅速发展 缩小了地球上的时空距离 国际交往日益频繁便利 因而整个地球就如同是茫茫宇宙中的一个小村落 地球村的说法表示现代科技的迅速发展 2 信件
  • 递归完成斐波拉契--函数递归与栈

    什么是递归 递归是一种重要的程序设计方法 简单的说 若在一个函数 过程或数据结构的定义中又应用了它自身 则这个函数 过程或数据结构称为是递归定义的 简称递归 什么是栈 栈是一种数据结构 略 栈与递归的关系 使用计算机实现递归 其实是一种栈的
  • 【项目仿真】温湿度智能监控系统设计(Proteus仿真)

    将单片机项目仿真 温湿度智能监控系统设计分享出来 如有不足 敬请指出 实验图片 实验视频 项目仿真 温湿度智能监控系统设计 Proteus仿真 目录 一 设计要求 二 程序软件 三 资料链接 四 关于作者 一 设计要求 通过Proteus仿
  • 科大讯飞、博世、蔚来、华为实习面试总结

    实习面试总结 为了给自己的秋招先铺铺路 找了一些公司实习面试 需要注意 华为实习很看学历 本科基本上过不了简历 苏州科大讯飞 挂 岗位 硬件实习生 问题 1 PCB板子上对外输出电流的时候是不是需要对电流的开关进行控制 如果需要的话 用什么
  • 4378 选取数对(递推)

    1 问题描述 给定一个长度为 n 的整数数列 a1 a2 an 请你选择 k 个数对 l1 r1 l2 r2 lk rk 要求所选数对满足 1 l1 r1 lt l2 r2 lt lt lk rk n 对于 1 i k ri li 1 m
  • Highly recommend using Dart Sass.

    为什么要替换 1 因为node sass和node js版本关联太紧了 如果这两个版本不匹配 就会起冲突 导致项目无法运行 但是dart sass 安装没有兼容性问题 2 sass官网团队也强烈建议使用dart sass sass团队强烈建
  • LNMP部署及搭建论坛

    目录 前言 一 LNMP架构的部署 理论 1 1 LNMP架构概述 1 2 MySQL安装配置 1 3 PHP解析环境的安装 1 4 配置Ngnx支持PHP环境 二 LNMP应用部署 实操 2 1 Nginx安装 2 1 1 编译安装步骤
  • HDLbits Popcount3的一点疑问

    题目 A population count circuit counts the number of 1 s in an input vector Build a population count circuit for a 3 bit i
  • FFmpeg从RTSP获取流时:h264、h265 判断 I 帧的方法

    H264中 I 帧的判断 这是用ffmpeg接口 av read frame 从IPC摄像头获取得到每一帧数据的前几十个字节 一般00 00 00 01分割之后的下一个字节就是NALU类型 NALU类型是可以用来判断帧的类型是I帧 还是P帧
  • Flask-SQLAlchemy(一) 一对一关系

    前言 课程中经常需要进行web开发 往往是采用Flask框架 建立数据库时就避免不了Flask SQLAlchemy的使用 此文章将记录创建关系表的过程 方便日后回顾以及大家交流讨论 一对一关系 下面的一对一关系以用户和身份证为例 首先创建