sqlalchemy id 相等与引用相等

2024-06-27

我第一次使用 SQLAlchemy,想知道......一般来说,在使用 SQLAlchemy 与 id(主键)相等时,依赖 python 的默认相等语义是否足够?

在我过去使用 ORM 技术(如 Java 的 Hibernate)的其他项目中,我们总是重写 .equals() 来检查对象的主键/id 是否相等,但当我回头看时,我不确定这一点总是有必要的。

在我能想到的大多数(如果不是全部)情况下,您只能对具有给定 id 的给定对象进行一次引用。而且该对象始终是附加对象,因此从技术上讲,您可以摆脱引用相等性。

简短的问题:我应该压倒一切吗?eq() and hash使用 SQLAlchemy 时我的业务实体的 () ?


简短的回答:不,除非您正在使用多个 Session 对象。

更长的答案,引用了很棒的内容文档 http://www.sqlalchemy.org/docs/orm/tutorial.html#adding-new-objects:

这里使用的 ORM 概念称为恒等映射,它确保会话中特定行上的所有操作都对同一组数据进行操作。一旦会话中存在具有特定主键的对象,该会话上的所有 SQL 查询将始终为该特定主键返回相同的 Python 对象;如果尝试在会话中放置第二个具有相同主键的已持久对象,它也会引发错误。

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

sqlalchemy id 相等与引用相等 的相关文章

  • 将列表转换为字符串并返回

    我有一个虚拟机 它从嵌套在列表中的元组读取指令 如下所示 0 4738 0 36 0 6376 0 0 存储这种机器代码程序时 文本文件是最简单的 必须写成字符串 这显然很难转换回来 是否有任何模块可以将字符串读入列表 以可读的方式存储列表
  • 没有要聚合的数字类型 - groupby() 行为发生变化吗?

    我对一些团体代码有问题 我很确定这些代码曾经运行过 在较旧的 pandas 版本上 在 0 9 上 我得到没有要聚合的数字类型错误 有任何想法吗 In 31 data Out 31
  • Python 文件打开并立即关闭

    尝试首先通过 powershell 然后通过 cmd 运行此代码 甚至简单地单击它 我正在输入 start python myfile py 来运行它 在每种情况下 文件都会在屏幕上闪烁并立即关闭 我查看它的唯一方法是将文件直接拖到cmd中
  • 在进程之间共享列表的正确方法?

    我想设置两个子流程 其中subprocess1不断生成数据 类型为list and subprocess2负责处理发来的数据subprocess1 I used multiprocessing Manager list 创建共享列表 但这是
  • 在 scipy 中按稀疏矩阵分组并返回一个矩阵

    关于使用 SO 处理有几个问题groupby与稀疏矩阵 然而输出似乎是列表 字典 https stackoverflow com questions 35410839 group by on scipy sparse matrix 数据框
  • 执行时忽略字符串列

    我使用以下代码来标准化 pandas DataFrame df norm df df mean df max df min 当所有列都是数字时 此方法效果很好 但是 现在我有一些字符串列df并且上述标准化有错误 有没有办法只对数据帧的数字列
  • 为什么线性读-混洗写并不比混洗读-线性写快?

    我目前正在尝试更好地了解内存 缓存相关的性能问题 我在某处读到 内存局部性对于读取比对于写入更重要 因为在前一种情况下 CPU 必须实际等待数据 而在后一种情况下 它可以将它们发送出去并忘记它们 考虑到这一点 我做了以下快速而肮脏的测试 我
  • 使用 ctypes 的 python 枚举模块

    之前enum模块已存在 c int或相关类型经常被用作替代枚举 但这没有也没有检查类型 现在 python 有一个enum模块 有没有办法直接使用它ctypes 是的 我们可以轻松创建自己的 CEnum 类 这要归功于 ctypes 允许我
  • 如何为 apache beam 数据流的输出 csv 添加标头?

    我注意到在java SDK中 有一个函数可以让你编写csv文件的标题 https cloud google com dataflow java sdk JavaDoc com google cloud dataflow sdk io Tex
  • 如何防止 python 请求对我的 URL 进行百分比编码?

    我正在尝试使用 python 中的 requests get 获取以下格式的 URL usr local bin python import requests print requests versiom url http api exam
  • 姜戈 - 信号。简单的例子开始

    我是 Django 新手 无法理解如何使用 Django 信号 谁能解释一下 Django 信号 用简单的例子 提前致谢 通过做一些很小的研究 你可以在互联网上找到关于 django 信号的非常好的内容 在这里我将向您简要介绍 Django
  • Python字典键(类对象)与多个比较器的比较

    我使用自定义对象作为 python 字典中的键 这些对象有一些默认值hash and eq定义的方法用于默认比较 但在某些功能中我需要使用不同的方式来比较这些对象 那么有什么方法可以覆盖或传递一个新的比较器来仅针对该特定函数进行这些关键比较
  • 如何在条形图上添加值标签

    我正在创建一个条形图 但我不知道如何在条形图上添加值标签 在条形图的中心或正上方 我相信解决方案是使用 文本 或 注释 但我 a 不知道该使用哪一个 一般来说 还没有弄清楚何时使用哪一个 b 无法看到任何一个来呈现值标签 这是我的代码 im
  • 如何在IDLE中同时运行两个模块

    我正在开发一个超级简单的套接字程序 我有客户端代码和服务器代码 如何同时运行这两个 py 文件以查看它们是否有效 您可以同时运行 IDLE Python shell 的多个实例 因此 打开 IDLE 并运行服务器代码 然后再次打开 IDLE
  • 有没有办法向后遍历 dask 数据帧?

    我想要read parquet但从开始的地方向后阅读 假设索引已排序 我不想将整个镶木地板读入内存 因为这违背了使用它的全部意义 有什么好的方法可以做到这一点吗 假设数据帧已建立索引 索引的反转可以通过两步过程完成 反转分区的顺序并反转每个
  • RuntimeError:期望后端 CUDA 对象,但获得后端 CPU 作为参数:ret = torch.addmm(torch.jit._unwrap_Optional(bias), input, Weight.t())

    当 的时候forward我的神经网络的功能 训练阶段完成后 正在执行 我正在经历RuntimeError Expected object of backend CUDA but got backend CPU for argument 4
  • 无法在 BeautifulSoup 中获得正确的链接

    我正在尝试解析一些 HTML 并且想提取与特定模式匹配的链接 我正在使用find使用正则表达式的方法 但它没有给我正确的链接 这是我的片段 有人可以告诉我我做错了什么吗 from BeautifulSoup import Beautiful
  • 传递到 Flask 的可能路线列表?

    我正在学习 Flask 有一个关于动态路由的问题 是否可以传入接受的路由列表 我注意到any转换器具有潜力 但很难找到使用中的示例 基本上我有不同的端点组 它们应该在它们之间触发相同的操作 这就是我的意思 cities New York L
  • 为什么我不能将 addstr() 添加到 pythoncurses 窗口中的最后一行/列?

    使用Python 我尝试使用addstr 将光标位置写入curses 窗口的右下角 但出现错误 ScreenH 2工作正常 但打印在窗口底部的第二行 ScreenH 1根本不起作用 我究竟做错了什么 import curses Screen
  • Python pandas - 根据集体 NaN 计数删除组

    我有一个基于不同气象站的多个变量 温度 压力等 的数据集 stationID Time Temperature Pressure 123 1 30 1010 5 123 2 31 1009 0 202 1 24 NaN 202 2 24 3

随机推荐