pyDAL一个python的ORM(9) pyDAL的嵌套查询

news/2024/7/5 1:34:52

假设有以下两个表:

db.define_table('person',Field('id', 'string'), Field(‘name', 'string'), Field(‘dept', 'string'))

db.define_table('things',Field('id', 'string'), Field(‘name', 'string'), Field(‘owner', 'string'))

一、使用belongs进行嵌套查询

我们查询要求:things表中属于marketing部门的东西:

前边我们已经提到,belongs还可以用作嵌套查询

rows = db(db.things.owner.belongs(db(db.person.dept == 'marketing')._select(db.person.name))).select()

红色部分就是一个嵌套,嵌套的select前记得加一个下划线_,

二、更清晰的书写规则

为了嵌套的条件更清晰,我们也可以这样书写,把嵌套单独拧出来写

owers = db(db.person.dept == 'marketing')._select(db.person.name)

rows = db(db.things.owner.belongs(owers)).select()

三、多重嵌套

当然有多个表时,可以多嵌套,假如还有一个表,

db.define_table('vendor',Field('id', 'string'), Field(‘name', 'string'), Field(‘sku', 'string'))

我们要查询marketing部门人员的东西的生产商:

owers = db(db.person.dept == 'marketing')._select(db.person.name)

things = db(db.things.owner.belongs(owers))._select(db.things.name)

vendors = db(db.vendor.sku.belongs(things)).select()


http://lihuaxi.xjx100.cn/news/1960564.html

相关文章

04.neuvector进程策略生成与管控实现

原文链接,欢迎大家关注我的github 一、进程学习管控的实现方式 策略学习实现: 进程的学习与告警主要依据通过netlink socket实时获取进程启动和退出的事件: 1.创建netLink socket; 2.通过创建netlink的fd对进程的事件进行捕获与更新&#x…

crackmapexec工具详解

下载地址:https://github.com/Porchetta-Industries/CrackMapExec wiki:https://www.crackmapexec.wiki/ 1.安装(MAC) 1.1.python3.9 pipx 安装(运行软件有警告,推荐 python3.11 pipx 安装) …

AIGC视频生成:Pika1.0快速入门详解

Pika1.0快速入门详解 一、简介二、登录三、参数设置1、改变画面大小(Aspect ratio)2、改变帧数大小(Frames per second)3、镜头平移(Camera control)4、画面运动控制(Strength of motion&#x…

2023年复盘—坚持长期主义

大家好,这里是大话硬件。 按照往年的逻辑,很多知识博主都会在12月份发出2023年的年终总结出来,但是今年好像很多博主还没有更新类似总结文章。去年我是在12月24号更新的,今年的总结文章在上周有一些简单的构想,但是没有时间写,因此,这篇文章对2023 年进行一个复盘。 复…

iOS Universal Links(通用链接)详细教程

一:Universal Links是用来做什么的? iOS9.0推出的用于应用之间跳转的一种机, 通过一个https的链接启动app。如果手机有安装需要启动的app,可实现无缝跳转。如果没有安装,会打开网页。 实现场景:微信链接无…

Shiro框架:Shiro内置过滤器源码解析

目录 1. 常见项目中过滤器配置 2.Url访问控制配置解析为内置过滤器 2.1 DefaultFilterChainManager构造并注册内置过滤器 2.2 构造过滤器链 3. Shiro内置过滤器解析 3.1 内置过滤器概览 3.2 公共继承类解析 3.2.1 顶层Filter接口 3.2.2 AbstractFilter 3.2.3 Nameab…

Halcon边缘滤波器edges_image 算子

Halcon边缘滤波器edges_image 算子 基于Sobel滤波器的边缘滤波方法是比较经典的边缘检测方法。除此之外,Halcon也提供了一些新式的边缘滤波器,如edges_image算子。它使用递归实现的滤波器(如Deriche、Lanser和Shen)检测边缘&…

自然语言处理持续更新

文章目录 自然语言处理列出几种文本特征提取算法RNN基本原理RNN 常见的几种设计模式是怎样的?RNN 为什么会梯度消失?RNN 为什么会梯度爆炸?RNN中为什么要采用tanh而不是ReLu作为激活函数?RNN和CNN对比,RNN对文本的时间…