当前位置: 首页 > news >正文

5.SQLAlchemy对两张有关联关系表查询

问题

例如,一个用户可以有多个收获地址。

定义表如下:

用户表

 地址表

一般情况,我们会先查询用户表,拿到用户id后,再到地址表中查询关联的地址数据。这样就要执行两次查询。

仅仅为了方便查询,需要一些属性便利的去查询数据,但是这些属性不能出现在数据库中。

模型之间的关联

from exts import db# 数据库模块需要继承db.Model
class User(db.Model):# 定义表名__tablename__ = "user"# 定义字段id = db.Column(db.Integer, primary_key=True)username = db.Column(db.String(50), unique=True)password = db.Column(db.String(100))info = db.Column(db.JSON)# 表示和地址模型进行关联,增加了一个addresses属性(这个属性不会再数据库表中对应出现)# backref='user'表示是Address要使用的一个属性,只是反向定义到了这里addresses = db.relationship('Address', backref='user')# 打印一个可读的字符串def __repr__(self):return '<User: %s %s>' % (self.username, self.id)class Address(db.Model):# 定义表名__tablename__ = "address"# 定义字段id = db.Column(db.Integer, primary_key=True)user_id = db.Column(db.Integer, db.ForeignKey('user.id'))city = db.Column(db.String(10))# Address希望有user属性,但是这个属性的定义需要在另一个模型中定义def __repr__(self):return '<Address: %s %s>' % (self.id, self.city)
@user2.route("/select_user", methods=['GET'])
def select_user():get_user = db.session.query(User).filter(User.id == 2).first()if get_user:print(get_user.addresses)return "select success"

@user2.route("/select_address", methods=['GET'])
def select_address():all_address = db.session.query(Address).filter(Address.user_id == 2).all()for addr in all_address:print(addr.user)return "select success"

 注意:这些关联数据可以成功查询的前提是基于外键关系,数据库中的表可以不建立关键,但是Python代码的Model之间要定义好关系,比如:

user_id = db.Column(db.Integer, db.ForeignKey('user.id'))

相关文章:

5.SQLAlchemy对两张有关联关系表查询

问题 例如&#xff0c;一个用户可以有多个收获地址。 定义表如下&#xff1a; 用户表 地址表 一般情况&#xff0c;我们会先查询用户表&#xff0c;拿到用户id后&#xff0c;再到地址表中查询关联的地址数据。这样就要执行两次查询。 仅仅为了方便查询&#xff0c;需要一些属…...

2.2.1 语句结构

ST(Structured Text)语言是一种基于IEC 61131-3标准的高级文本编程语言,其语法规则严格且清晰。以下是ST语言中关于分号、注释和代码块的详细语法规则说明: 分号(;)作用:分号用于表示语句的结束。语法规则: 每个独立的语句必须以分号结尾。分号是语句的终止符,用于分隔…...

安当二代TDE透明加密技术与SMS凭据管理系统相结合的数据库安全解决方案

安当二代TDE透明加密技术与安当SMS凭据管理系统的结合&#xff0c;为企业提供了一套完整的数据库安全解决方案&#xff0c;涵盖字段级加密脱敏和动态凭据管理两大核心功能。以下是其实现方式和技术特点的详细说明&#xff1a; 一、安当二代TDE透明加密技术&#xff1a;字段级加…...

es的date类型字段按照原生格式进行分组聚合

PUT student2 { "mappings": {"properties": {"name": {"type": "text","analyzer": "standard" // 使用标准分析器&#xff0c;适合姓名字段},"birthday": {"type": "date&…...

高频次UDP 小包丢包分析

目录 背景测试方法测试结果case1: (经过多级交换机)case2: 长时测试(经过多级交换机)case3: 长时测试(设备直联)可能原因分析解决方法背景 UDP作为面向非连接的传输协议,并不能保证可靠交付。本文编写代码测试设备之间UDP小包传输的可靠性。 测试方法 发送侧基于豆包…...

科目四考试内容

一、考试内容 科目四考试主要包含以下五个方面的内容&#xff1a; 法律法规与规章制度&#xff1a;理解并掌握道路交通规则&#xff0c;涉及交通信号、标志、标线以及相关设施的运用。综合判断与案例分析&#xff1a;培养学员应对复杂交通情况的能力&#xff0c;学会识别违法…...

2015 年 4 月多省(区、市)公务员录用考试 《申论》真题详解

一&#xff09;“给定资料1~2”反映了人们在过去的工作和生活方面形成的很多“惯例”或“习惯做法”正在悄然改变。请分析导致这种改变发生的主要原因。&#xff08;20分&#xff09; 一、给定资料   材料1&#xff1a;   互联网的日益普及和开发利用&#xff0c;不断为人…...

四、CSS效果

一、box-shadow box-shadow:在元素的框架上添加阴影效果 /* x 偏移量 | y 偏移量 | 阴影颜色 */ box-shadow: 60px -16px teal; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影颜色 */ box-shadow: 10px 5px 5px black; /* x 偏移量 | y 偏移量 | 阴影模糊半径 | 阴影扩散半…...

全面评测 DOCA 开发环境下的 DPU:性能表现、机器学习与金融高频交易下的计算能力分析

本文介绍了我在 DOCA 开发环境下对 DPU 进行测评和计算能力测试的一些真实体验和记录。在测评过程中&#xff0c;我主要关注了 DPU 在高并发数据传输和深度学习场景下的表现&#xff0c;以及基本的系统性能指标&#xff0c;包括 CPU 计算、内存带宽、多线程/多进程能力和 I/O 性…...

图论 八字码

我们可能惊异于某些技巧。我们认为这个技巧真是巧妙啊。或者有人认为我依靠自己的直觉想出了这个表示方法。非常自豪。我认为假设是很小的时候&#xff0c;比如说小学初中&#xff0c;还是不错的。到高中大学&#xff0c;就有一些不成熟了。因为这实际上是一个竞技。很多东西前…...

OSI5GWIFI自组网协议层次对比

目录 5G网络5G与其他协议栈各层映射 5G网络 物理层 (PHY) 是 5G 基站协议架构的最底层&#xff0c;负责将数字数据转换为适合无线传输的信号&#xff0c;并将接收到的无线信号转换为数字数据。实现数据的编码、调制、多天线处理、资源映射等操作。涉及使用新的频段&#xff08…...

北理新源监控平台都管理哪些数据

北理新源信息科技有限公司&#xff08;简称“北理新源”&#xff09;依托北京理工大学电动车辆国家工程研究中心&#xff0c;建设和运营了“新能源汽车国家监测与管理平台”。该平台是国家级的新能源汽车数据监管平台&#xff0c;主要负责对新能源汽车的运行数据进行采集、监测…...

WPS不登录无法使用基本功能的解决方案

前言 WPS不登录无法使用基本功能的原因通常是为了同步数据、提供更多高级功能或满足软件授权要求。‌然而&#xff0c;一些用户可能出于隐私或便捷性的考虑&#xff0c;不愿意登录账号。在这种情况下&#xff0c;WPS可能会限制未登录用户的使用权限&#xff0c;导致工具栏变灰…...

车载软件架构 --- CP和AP作为中央计算平台的软件架构双核心

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 简单&#xff0c;单纯&#xff0c;喜欢独处&#xff0c;独来独往&#xff0c;不易合同频过着接地气的生活…...

【技巧】优雅的使用 pnpm+Monorepo 单体仓库构建一个高效、灵活的多项目架构

单体仓库&#xff08;Monorepo&#xff09;搭建指南&#xff1a;从零开始 单体仓库&#xff08;Monorepo&#xff09;是一种将多个相关项目集中管理在一个仓库中的开发模式。它可以帮助开发者共享代码、统一配置&#xff0c;并简化依赖管理。本文将通过实际代码示例&#xff0…...

【深度学习基础】多层感知机 | 权重衰减

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上&#xff0c;结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

修改word的作者 最后一次保存者 总编辑时间 创建时间 最后一次保存的日期

作者&#xff1a; 1.打开word文件 2.点击左上角的文件 3.选项 4.用户信息 5.将用户信息中的 姓名改为你需要的名字 最后一次保存者 1.word重命名为.zip文件 2.docProps中有个core.xml 3.用记事本打开有个lastModifiedBy标签&#xff0c;将里面内容改为你需要的名字 总编辑时…...

青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原

青少年编程与数学 02-007 PostgreSQL数据库应用 15课题、备份与还原 一、数据库备份与还原二、PostgreSQL中操作数据库的备份与还原1. 使用pg_dump进行逻辑备份2. 使用pg_restore进行逻辑还原3. 使用pg_basebackup进行物理备份4. 还原物理备份注意事项 三、自动备份1. 使用pg_d…...

Flutter:自定义Tab切换,订单列表页tab,tab吸顶

1、自定义tab切换 view <Widget>[// 好评<Widget>[TDImage(assetUrl: assets/img/order4.png,width: 36.w,height: 36.w,),SizedBox(width: 10.w,),TextWidget.body(好评,size: 24.sp,color: controller.tabIndex 0 ? AppTheme.colorfff : AppTheme.color999,),]…...

SAS-proc sgplot绘图

1、绘图-直条图示例&#xff1a; 1.1 数据集 1.2 代码 proc sgplot data sashelp.cars;vbar origin / response msrp /* response&#xff1a;响应变量&#xff0c;Y轴 */stat mean /* stat&#xff1a;统计量&#xff0c;结果用均值呈现 */group type /* group&#…...

BurpSuite为什么要配置证书

BurpSuite配置证书&#xff0c;核心是破解HTTPS加密、正常中间人抓包。不配置证书&#xff0c;浏览器报不安全、连不上&#xff1b;配置了证书&#xff0c;解密HTTPS、能看明文、能改包。为什么必须配置证书1.HTTPS是加密的浏览器和服务器之间的通信用TLS/SSL加密&#xff0c;防…...

外链引流抓取技巧

关键项核心解释核心目标利用外部网站的超链接&#xff0c;将搜索引擎的爬虫&#xff08;蜘蛛&#xff09;吸引至目标网站&#xff0c;以促进页面发现、抓取与收录。基本机制1. 蜘蛛发现新路径&#xff1a;搜索引擎蜘蛛在遍历互联网时&#xff0c;通过页面上的链接发现新的URL。…...

Python高效处理字符串去重的5种实用技巧

1. 字符串去重的核心逻辑与应用场景 字符串去重是数据处理中最基础却高频的操作之一。想象你手里有一串钥匙&#xff0c;其中几把是重复的&#xff0c;去重就是帮你挑出唯一的那几把。在Python中处理用户输入、日志清洗或数据预处理时&#xff0c;我经常遇到需要去除重复字符的…...

别再只会用na.omit删数据了!R语言缺失值处理保姆级教程:从均值填补到随机森林实战

R语言缺失值处理实战&#xff1a;从基础填补到随机森林的完整指南 第一次拿到带有缺失值的数据集时&#xff0c;大多数人的本能反应是直接删除那些不完整的记录。这种简单粗暴的做法看似省事&#xff0c;却可能让你的分析结果偏离真实情况。想象一下&#xff0c;你正在分析一组…...

在AutoDL云平台高效部署YOLO训练:从零到一的实战避坑指南

1. 为什么选择AutoDL跑YOLO训练&#xff1f; 第一次接触YOLO目标检测项目时&#xff0c;我像大多数开发者一样被本地显卡性能劝退。直到发现AutoDL这个云GPU平台&#xff0c;才真正体会到什么叫"用多少付多少"的灵活。相比动辄上万的游戏显卡&#xff0c;AutoDL上每小…...

避开这5个坑!WPS宏调用DeepSeek API识别标题的实战经验分享

WPS宏调用DeepSeek API识别标题的五个典型陷阱与实战解决方案 当技术文档超过20页时&#xff0c;手动设置标题样式和目录的工作量会呈指数级增长。去年我为某科技公司处理一份87页的技术白皮书时&#xff0c;团队花了整整两天时间调整标题层级&#xff0c;而最终因为格式不一致…...

西交提出 OdysseyArena:让智能体真正“学会探索”的长程归纳推理基准

&#x1f4cc; 一句话总结&#xff1a; 本工作提出 OdysseyArena&#xff0c;一个面向长时程&#xff08;long-horizon&#xff09;、主动探索&#xff08;active&#xff09;、归纳学习&#xff08;inductive&#xff09;三大核心能力的交互式评测平台&#xff0c;系统性检验…...

【2026年最新600套毕设项目分享】springboot仁和机构的体检预约系统(14336)

有需要的同学&#xff0c;源代码和配套文档领取&#xff0c;加文章最下方的名片哦 一、项目演示 项目演示视频 二、资料介绍 完整源代码&#xff08;前后端源代码SQL脚本&#xff09;配套文档&#xff08;LWPPT开题报告/任务书&#xff09;远程调试控屏包运行一键启动项目&…...

ngx_sort

1 定义 ngx_sort 函数 定义在 ./nginx-1.24.0/src/core/ngx_string.cvoid ngx_sort(void *base, size_t n, size_t size,ngx_int_t (*cmp)(const void *, const void *)) {u_char *p1, *p2, *p;p ngx_alloc(size, ngx_cycle->log);if (p NULL) {return;}for (p1 (u_char…...

如何高效构建Steam游戏DRM解除自动化解决方案:开源框架技术实现

如何高效构建Steam游戏DRM解除自动化解决方案&#xff1a;开源框架技术实现 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack Steam游戏DRM解除自动化解决方案为技术爱好者提供了一套完整…...