Sqlalchemy 将 WHERE 子句复制到 FROM

2023-12-07

我向 psql 编写了原始查询,它工作正常,但是当我在 sqlalchemy 中编写此查询时,我的 WHERE 子句复制到 FROM 子句。

select id from T1 where arr && array(select l.id from T1 as l where l.box && box '((0,0),(50,50))');

在此查询中,我从 T1 获取所有 id,其中带有整数的数组与子查询的结果相交。

class T1():
    arr = Column(ARRAY(Integer))
    ...

class T2():
    box = Column(Box)  # my geometry type
    ...

1 验证:

layers_q = select([T2.id]).where(T2.box.op('&&')(box))  # try find all T2 intersects with box
chunks = select([T1.id]).where(T1.arr.overlap(layers_q))  # try find all T1.id where T1.arr overlap with result from first query 


SELECT T1.id 
FROM T1 
WHERE T1.arr && (SELECT T2.id 
FROM T2 
WHERE T2.box && %(box_1)s)

我有一个关于类型转换的 PG 错误。我明白。

2版本:

layers_q = select([T2.id]).where(T2.box.op('&&')(box))
chunks = select([T1.id]).where(T1.arr.overlap(func.array(layers_q)))

I added 函数.array()用于转换为数组但结果不正确:

SELECT T1.id 
FROM T1, (SELECT T2.id AS id 
FROM T2 
WHERE T2.box && %(box_1)s) 
WHERE T1.arr && array((SELECT T2.id 
FROM T2 
WHERE T2.box && %(box_1)s))

在那里你可以看到我在 FROM 子句中重复的内容。怎么做才正确呢?


我找到解决方案!

func.array(select([T2.id]).where(T2.box.op('&&')(box)).as_scalar())

添加后as_scalar()一切都很好,因为在我的选择中,所有 id 都需要包含在一个数组中。

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

Sqlalchemy 将 WHERE 子句复制到 FROM 的相关文章

随机推荐

  • 需要在新活动中显示结果[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 第一个活动的结果显示在同一个屏幕 窗口 活动 中 我只需要在另一个活动中显示结果 有人可以告诉我该怎么做吗 主要活动如下 package com example knowyoursel
  • 使用 ReadToDescendant 和/或 ReadElementContentAsObject 更正 XmlReader 问题

    我正在研究通常非常好的开源项目中的一个神秘错误Excel 数据阅读器 它跳过从我的特定 OpenXML xlsx 电子表格读取的值 问题发生在ReadSheetRow 方法 下面的演示代码 源 XML 由 Excel 保存 并且不包含空格
  • Woocommerce 有条件结帐字段和基于国家/地区和购物车总额的欧盟增值税

    在 woocommerce 中 我启用了 Woocommerce EU VAT 插件 并创建了一个必需的自定义结账选择字段 客户类型 有 2 个选择 个人 Business 现在我尝试显示并启用欧盟增值税字段 订单金额高达500 only
  • 无法创建 azure 机器人服务 - “此 MSA 应用程序 ID 已在使用中”

    尝试使用新发布的服务 但在启动时遇到问题 输入姓名 订阅等 获取我的 Microsoft App ID 并将其输入到表单中 选定的C 选择任一模板 当我单击 创建机器人 时 我收到 此 MSA 应用程序 ID 已在使用中 我需要做什么 我单
  • 时钟 - 表格设计[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 打孔台的最佳设计是什么 您会将打孔 打孔存储在同一个表中还是单独的表中 为什么 Edit 小时工在轮班开始时打卡 在轮班结束时打卡下班 按小时计算 豁免员工除了在一天开始 结束时进出外
  • Apache 子域重定向到 Tomcat

    我对 Apache HTTP 和系统管理都很陌生 所以我有这个问题 我有一个域 www doamin com 其中 Apache 监听端口 80 我还在同一域上有一个 Apache Tomcat 配置为端口 8080 有没有办法配置子域 即
  • 使用 CredEnumerate 提取 WebCredentials

    作为密码管理工具的一部分 我尝试使用以下命令枚举 IE 10 网站用户名 即自动完成用户名 CredEnumerate 当我打电话时CredEnumerate 它会从 凭据管理器 的 Windows 凭据 部分中生成多个用户名 通用用户名和
  • 闪亮的基本情节的下载处理程序(保存情节)

    如何使用闪亮的下载按钮保存情节 我知道如何为 ggplot 做这件事 但我找不到如何为基本做这件事plot Example library shiny library ggplot2 ui ui lt fluidPage downloadB
  • Firebase 登录:GoogleSignIn onActivityResult() 返回 RESULT_CANCELED,结果错误 12500

    好的 我知道这个问题已被问过多次 但由于某种原因此错误不断发生 情况如下 创建了 PROD firebase 项目 将 google services json 插入到 Android 项目中 Android 项目路径 app google
  • :link 伪类确实匹配访问过的链接

    我正在阅读有关 CSS 伪类的内容 并且遇到了 link伪类 大家都说 link伪类匹配具有 href 属性的链接元素and还没有被访问过 当我检查时 第一个条件是正确的 但显然第二个条件 仅匹配未访问的链接 不是这种情况 至少对于 Goo
  • 使用 Java 从 HTML 中提取微数据

    我真的需要帮助来提取嵌入在 HTML5 中的 Mircodata 我的目的是从网页中获取结构化数据 就像谷歌的这个工具一样 http www google com webmasters tools richsnippets 我进行了很多搜索
  • 在 cakephp 2.x 中从视图到控制器进行 jquery ajax 调用

    我试图从视图向控制器发出 ajax 请求 ajax 请求工作正常 但从控制器没有返回任何内容到视图 我不知道问题出在哪里 我正在尝试的是在我的视图一侧显示来自控制器的一些数据 并且有一个选择框 当我从选择框中选择一个城市时 它会调用 aja
  • Angular + ng-bootstrap - 模态:窗口未打开

    我是 Angular 新手 在尝试使用 ng bootstrap 模式的简单示例时遇到问题 我只是尝试打开一个窗口 但它出现在我的应用程序中 我想打开一个新窗口 如 ng bootstrap 示例中所述 我在用 角度 4 0 0 Boots
  • Interop COM(-isch) 接口封送处理会导致简单调用时出现 AccessViotlationException

    我正在尝试为本机 C 插件标准编写托管互操作库 这个本机 C 库使用 COM 兼容的接口设计 然而 它不做任何类注册的事情 与 COM 一样 所有接口都派生自 IUnknown 称为 FUnknown 但无论如何都是相同的 3 个方法 我编
  • 如何从根域访问子域的html5 localStorage?

    当我有 www mydomain com 和 mydomain com 时 它们每个都有一个单独的 localStorage 我读过这里http msdn microsoft com en us library cc197062 VS 85
  • 尝试创建链表但指针分配错误

    我正在尝试制作一个链接列表并创建一些方法 但是 我收到错误 赋值使指针来自整数 无需强制转换 这是我的代码 include
  • 环境检测:node.js或浏览器

    我正在开发一个 JS 应用程序 需要在客户端和服务器端 在浏览器上的 Javascript 和 Node js 中 工作 并且我希望能够重用以下代码部分 用于两侧 我发现window是一个只能在浏览器上访问的变量 并且global在节点中
  • 创建具有多列的数据框,这些列都是不同窗口的滚​​动平均值

    我有一个 mydata 数据框 有 2 列 日期列和值列 我想将列附加到数据框中 这些列是各个窗口中 值 列的移动平均值 目前 mydata 有 2 列 Column 1 date Column 2 value 我希望第 3 列是值列的 2
  • 抑制 libsvm 中的输出 (python)

    我正在使用 python 中的 libsvm svmutils 来执行分类任务 分类器是准确的 但是 我得到这样的输出 optimization finished iter 75 nu 0 000021 obj 0 024330 rho 0
  • Sqlalchemy 将 WHERE 子句复制到 FROM

    我向 psql 编写了原始查询 它工作正常 但是当我在 sqlalchemy 中编写此查询时 我的 WHERE 子句复制到 FROM 子句 select id from T1 where arr array select l id from