我第一次使用 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(使用前将#替换为@)