不能混合得到和过滤?

问题描述 投票:1回答:1

当我试图获得下一个查询时:

answer = sess.query(User).filter(User.id==1).get(1)

我收到错误:sqlalchemy.exc.InvalidRequestError: Query.get() being called on a Query with existing criterion. 查询:

answer = sess.query(User).get(1)

工作良好。

为什么第一个不起作用?

我的班级定义:

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    adr = relationship('Address', backref='uuu')
sqlalchemy
1个回答
3
投票

来自Query.get的文档:

get()仅用于返回单个映射实例,而不是多个实例或单个列构造,并且仅用于返回单个主键值。始发查询必须以这种方式构造,即针对单个映射实体,而不需要额外的过滤标准。但是,可以应用通过options()加载选项,并且如果对象尚未在本地存在,则将使用加载选项。

© www.soinside.com 2019 - 2024. All rights reserved.