我希望能够检查Count
对象中是否存在具有给定主键的对象。
这类似于0
函数,其操作类似于:
Session
我只想在会话中获取对象而不发出任何SQL。
(原因是我的应用程序,我知道如果对象不在会话中,它就不会在数据库中)
答案 0 :(得分:1)
这可以通过使用-The Query Object
来完成使用query()方法根据给定的Session生成查询:
q = session.query(SomeMappedClass)
以下是Query对象的完整界面。
class sqlalchemy.orm.query.Query(entities,session = None) ORM级SQL构造对象。
查询是ORM生成的所有SELECT语句的来源,包括最终用户查询操作以及高级内部操作(如相关集合加载)。它具有生成接口,连续调用返回一个新的Query对象,前者的副本以及与之相关的附加标准和选项。
查询对象通常最初使用Session的query()方法生成。
答案 1 :(得分:1)
您可以通过在会话的identity_map
中进行查找来检查具有给定主键的对象是否在会话中。
身份映射的键是“身份密钥”元组,您可以使用sqlalchemy.orm.util.identity_key
函数生成该元组。
例如,给定具有主键MyClass
的映射类id
,以检查会话中ID为99的对象:
from sqlalchemy.orm.util import identity_key
my_key = identity_key(MyClass, 99)
# will return the instance of MyClass in the session, or None
my_class_instance = my_session.identity_map.get(my_key)