不能混合得到和过滤?

时间:2018-03-05 15:33:03

标签: sqlalchemy

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

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')

1 个答案:

答案 0 :(得分:3)

来自Query.get的文档:

  

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