我定义了如下SQLAlchemy模型:
class SubProject(Base):
active = Column(Boolean)
class Project(Base):
active = Column(Boolean)
subprojects = relationship(SubProject, backref=backref('project'))
class Customer(Base):
active = Column(Boolean)
projects = relationship(Project, backref=backref('customer'))
我需要得到这两个州之一的客户名单:
只有活动客户,只有活动项目和活动子项目
编辑值得注意的是,所有没有项目的活跃客户都应包括在内, 所有未进行调查的活动项目都应包括在这一部分中。
这在SQL中使用join是微不足道的,但是我不知道如何使用sqlalchemyorm来完成它。解决办法是什么?在
如果我理解正确,您需要所有非活动对象对查询不可见。以下类将筛选出
active
属性设置为False
的所有模型对象,包括通过关系访问的对象:要使用它,您必须创建一个单独的会话对象:
^{pr2}$这种方法有局限性,对于一些复杂的查询来说不适用,但对于大多数项目来说是可以的。在
为了补充丹尼斯的回答,您可以使用enable\u断言(False)。据我所知,这是对SQLAlchemy为正常操作添加的查询的额外检查。对于更复杂的情况,您可以禁用它。在
相关问题 更多 >
编程相关推荐