SQLAlchemy - 当 count() 表示还有更多结果时,仅返回一个结果

2023-12-01

我遇到了一个非常大的结果集只返回一行的问题。

Session.query(TestSet).join(Instance).count()
>> 4283878
Session.query(TestSet).join(Instance).offset(0).limit(100).count()
>> 100
Session.query(TestSet).join(Instance).offset(0).limit(100).all()
>> [<model.testset.TestSet object at 0x043EC2F0>]

那是,all仅返回one我的模型的实例,而不是 100。现在,更奇怪的是:

len(Session.query(TestSet).join(Instance).offset(0).limit(100).distinct().all())
>> 100

所以如果我添加distinct before all,我返回所有 100 个结果。这里发生了什么?


The Query对象,当要求迭代代表实体的结果时,例如TestSet,根据对象标识对结果行执行唯一化,因此,如果查询返回 100 行,每行具有相同的TestSet主键,你只能得到一个结果对象。这种行为起源于“渴望加入”功能Query,通常情况下,会收到许多结果行,每个结果行都具有相同的主要标识,但还包含相关行的不同辅助标识,该相关行将根据每个主要标识填充到集合中 - 只有主要标识的一个实例在这种非常常见的情况下是可取的。

然后我们考虑一下什么distinct()做。假设您对 4M 对象的查询返回 id=1 的 1000 行、id=2 的 1000 行等。带有 limit(100) 的查询命中 id=1 的前 100 行,Query唯一化,你会得到一个结果对象,因为它们都是 id=1。但与distinct(),突然我们得到了 100 行具有不同身份的行,即“id=1”、“id=2”、“id=3”。Query然后将每一行分配给一个新的TestSet对象在恒等映射中,你会得到 100 行。

Setting echo='debug'在你的Engine暂时将显示正在发出的 SQL 以及返回的结果行。当您看到许多结果行都具有相同的主键时,您就知道Query当要求返回完整实体时,会将所有这些冗余身份唯一化为每行表示的单个对象。

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

SQLAlchemy - 当 count() 表示还有更多结果时,仅返回一个结果 的相关文章

  • 在Python3.6中调用C#代码

    由于完全不了解 C 编码 我希望在我的 python 代码中调用 C 函数 我知道有很多关于同一问题的问答 但由于一些奇怪的原因 我无法从示例 python 模块导入简单的 c 类库 以下是我所做的事情 C 类库设置 我使用的是 VS 20
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • Tensorflow 可变图像输入大小(自动编码器、放大......)

    Edit WARNING不建议使用不同图像大小的图像 因为张量需要具有相同的大小才能实现并行化 我一直在寻找解决方案 了解如何使用不同大小的图像作为神经网络的输入 Numpy 第一个想法是使用numpy 然而 由于每个图像的大小不同 我无法
  • python - 是否可以扩展 xml-rpc 可以序列化的事物集?

    我看到几个问题询问如何发送numpy ndarray通过 xml rpc 调用 这不能开箱即用 因为正如 xml rpc 中所述docs https docs python org 2 library xmlrpclib html 有一组固
  • 在python中将文本文件解析为列表

    我对 Python 完全陌生 我正在尝试读取包含单词和数字组合的 txt 文件 我可以很好地读取 txt 文件 但我正在努力将字符串转换为我可以使用的格式 import matplotlib pyplot as plt import num
  • Python BeautifulSoup XML 解析

    我编写了一个简单的脚本来使用 BeautifulSoup 模块解析 XML 聊天日志 标准 soup prettify 工作正常 只是聊天日志中有很多绒毛 您可以在下面看到我正在使用的脚本代码和一些 XML 输入文件 Code import
  • 带图像的简单 GUI [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我试图在简单的 GUI 上显示一些卡
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • “char”/“character”类型的类型提示

    char 或 character 没有内置的原始类型 因此显然必须使用长度为 1 的字符串 但是为了暗示这一点并暗示它应该被视为一个字符 如何通过类型提示来实现这一点 grade chr A 一种方法可能是使用内置的 chr 函数来表示这一
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • 如何通过双击在浏览器中打开 ipynb 文件

    以前 我安装了 Canopy 当时 我只需双击 ipynb 文件并在浏览器中打开它们即可 但是 后来我需要Anaconda 一旦我安装了它 这个功能就没有了 现在我只希望能够简单地双击 ipynb 文件 然后该文件就会在 Firefox 中
  • 如何在 Python 中将彩色输出打印到终端?

    是否有与 Perl 等效的 Python 语言 print color red print
  • Python:计算数据帧列中所有行中特定字符的实例数

    我有一个包含列 toaddress ccaddress body 的数据框 df 我想迭代数据帧的索引 以获取 toaddress 和 ccaddress 字段中电子邮件地址的最小 最大和平均数量 这是通过计算这两列中每个字段中的 和 的实
  • 如何列出 python PDB 中的当前行?

    在 perl 调试器中 如果重复列出离开当前行的代码段 可以通过输入命令返回到当前行 点 我无法使用 python PDB 模块找到任何类似的东西 如果我list如果我自己离开当前行并想再次查看它 似乎我必须记住当前正在执行的行号 对我来说
  • conda-env list / conda info --envs 如何查找环境?

    我一直在尝试 anaconda miniconda 因为我的用户使用随 miniconda 安装的结构生物学程序 并且作者都没有 A 考虑到可能存在其他 miniconda 应用程序 B 他们的程序将在多用户环境中使用 因此 使用 Arch
  • Matplotlib Scatter - ValueError:RGBA 序列的长度应为 3 或 4

    我正在尝试为我的功能绘制图表 但不断收到此错误 ValueError RGBA sequence should have length 3 or 4 每当我只有 6 种形状时 代码就可以完美运行 但现在我将其增加到 10 种 它就不起作用了
  • Pandas Dataframe:将包含列表的行扩展到多行,并为所有列提供所需的索引

    我在 pandas 数据框中有时间序列数据 索引为测量开始时的时间 列中包含以固定采样率记录的值列表 连续索引 列表中元素数量的差异 这是它的样子 Time A B Z 0 1 2 3 4 1 2 3 4 2 5 6 7 8 5 6 7 8
  • Airflow Python 单元测试?

    我想为我们的 DAG 添加一些单元测试 但找不到任何单元测试 有 DAG 单元测试框架吗 有一个端到端的测试框架存在 但我猜它已经死了 https issues apache org jira browse AIRFLOW 79 https
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back

随机推荐

  • Javascript window.open() 函数打开链接而不使用弹出窗口拦截器

    JavaScriptwindow open 函数打开链接而不使用弹出窗口拦截器 我想从 javascript 打开一些链接window open 功能 但在 firefox chrome safari 上被阻止 如何通过 javascrip
  • 非英语语言的推送通知

    我已经成功实现了这段代码 有谁知道如何用 C 编写 Apple 推送通知提供程序 效果很好 但我有一个问题 有人可以帮助我如何发送希伯来语或阿拉伯语等非英语消息吗 如果字符串包含任何非英文字符 则不会发送 谢谢 我找到了解决方案 长度错了
  • 在 Python 中使用 urlopen() 防止“隐藏”重定向

    我在用美丽汤对于网页抓取 我在使用时遇到特定类型网站的问题urlopen 网站上的每个项目都有自己独特的页面 并且项目有不同的格式 例如 500 毫升 1 升 2 升 当我打开产品的 URL 时 www example com produc
  • 无法使用 fetchkml 函数将本地 KMZ 文件加载到具有 google Earth 插件的浏览器中

    我们有一个 KMZ 文件 可以很好地加载到 Google 地球桌面应用程序中 没有错误 当我们尝试使用 Google Earth 插件来做同样的事情时 它甚至不会从fetchKml功能 我们需要了解使用的任何特殊设置fetchKml在本地文
  • 如何使用 Qt 创建暂停/等待函数?

    我正在玩Qt 我想在两个命令之间创建一个简单的暂停 但它似乎不会让我使用Sleep int mili 而且我找不到任何明显的等待函数 我基本上只是制作一个控制台应用程序来测试一些类代码 这些代码稍后将包含在适当的 Qt GUI 中 所以现在
  • 编译器为内在函数生成的程序集的问题

    我正在使用英特尔 SSE AVX FMA 内在函数来实现某些数学函数的完美内联 SSE AVX 指令 给出以下代码 include
  • 在 BLE 中随机化 Mac 地址

    我制作了一款将 iOS 设备变成信标的应用程序 现在 当我从 Android 设备扫描 BLE 设备时 我在扫描列表中找到了该 iOS 设备 但问题是每次我都得到随机的 Mac 地址 所以 我的问题是 这种默认行为是否意味着获取随机 mac
  • pine 脚本中 := 和 = 运算符之间的区别

    我对 TradingView Pine 脚本非常陌生 我没有找到合适的参考来理解两者之间的区别 and 运营商 有人有参考或描述吗 提前致谢 用于声明和初始化变量 用于在初始化后为变量赋值 将其转换为 可变变量 任何不可变变量 follow
  • 如何在 iPhone 中裁剪图像

    我想做同样的事情this问题 在我的应用程序中 我想像在 Facebook 中进行图像裁剪一样裁剪图像 任何人都可以通过优秀教程的链接或任何示例代码来指导我 我提供的链接将完整描述我的要求 您可以创建具有任何属性的新图像 这是我的功能 女巫
  • 顺序索引的填充因子为 PK

    Yes fillfactor再次 我花了很多时间阅读 但无法决定哪种方案最适合每种情况 我不明白碎片何时以及如何发生 我正在将数据库从 MS SQL Server 迁移到 PostgreSQL 9 2 Case 1 在顺序 串行 PK 中每
  • Android 应用程序中的 JPEG 硬件解码支持

    我的 Android 应用程序需要在 Android 2 2 手机 及更高版本 上解码基于大分辨率的 JPEG 图像 目前我正在使用 BitmapFactory decodeStream API 即 SKIA 库来解码流 1 据我所知 SK
  • android.os.ServiceSpecificException:GPIO2_IO02 已在使用中(代码 16)

    我正在研究 android 的东西 Pico i MX7D I O 我得到了android os ServiceSpecificException GPIO2 IO02 已在使用中 代码 16 异常 这是什么意思 请帮我 我的示例程序是从克
  • Spring中有Spring惰性代理工厂吗?

    Wicket 有一个称为惰性代理工厂的设备 鉴于
  • 调整 ctypes 数组的大小

    我想调整 ctypes 数组的大小 如您所见 ctypes resize 无法正常工作 我可以编写一个函数来调整数组大小 但我想知道一些其他解决方案 也许我错过了一些 ctypes 技巧 或者也许我只是错误地使用了调整大小 名称 c lon
  • 在 Javascript 中向 css 样式属性添加 1

    我试图首先获取元素的 order 属性的值 然后在单击按钮时向其添加 1 问题是 我得到的是 11 而不是得到 1 再加上 1 再得到 2 运算符不应该添加这些值吗 我究竟做错了什么 carouselPrev addEventListene
  • 如何在 R 上为每个方面(条形图)注释不同的值?

    我想知道如何注释条形图中的每个方面 现在 我正在使用 geom signif 函数 该函数工作完美 只是它将一个面上的注释复制到另一个面上 我的代码是这样的 geom signif annotation c p 0 01 y positio
  • 指针运动。为什么数字这么高?为什么它以块而不是恒定流的形式打印信息?

    你好 我正在尝试编写一个程序 需要报告每个鼠标运动的位置 我已经打电话给XSelectInput 函数与PointerMotionMask面具 一切似乎都正常 但打印后的数字不会在每次移动后出现 它们以块的形式出现 并且也以块的形式出现ev
  • 如何正确地将 CSV 文件解析为二维数组?

    我正在尝试将 csv 文件解析为二维数组 其中每一行都是一个数据条目 每一列都是该条目中的一个字段 一次性完成这一切可以简化处理代码并将其与解析代码分开 我尝试编写一个简单的解析器 使用String Split用逗号分隔文件 据我发现 这是
  • Oracle - 不能在 select 子句中与其他列一起使用 * 符号

    抱歉 如果它很微不足道 但是选择列 标志并不总是有效 而且我没有找到对此行为的参考 我可以选择表格A和列col并附有以下声明 select from A and select col from A and select aa col aa
  • SQLAlchemy - 当 count() 表示还有更多结果时,仅返回一个结果

    我遇到了一个非常大的结果集只返回一行的问题 Session query TestSet join Instance count gt gt 4283878 Session query TestSet join Instance offset