SQLAlchemy条件关系

2024-10-01 07:18:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望在两个ORM对象之间有一对多的关系,并用第二个关系来扩展这个关系,该关系在应用约束时链接到同一个“many”对象。在

下面的例子可以详细说明:

class Users(SQLABase):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    addresses = relationship('Addresses', backref='user')


class Addresses(SQLABase):
    __tablename__ = 'addresses'
    id = Column(Integer, primary_key=True)
    historic = (String(1))
    add1 = Column(String)
    user = Column(Integer, ForeignKey('users.id'))

我想要一个属性'Users.valid_地址与相同的“addresses”表筛选相关,其中地址。历史=='N'类似于以下查询:

^{pr2}$

我在找“炼金术之道”。在

  • 我可以对关系应用条件吗?在
  • 我是否需要迭代当前关系的结果?在
  • 我是否应该基于SQL创建一个附加的“有效的\u addresses”对象 应用条件的地址表视图?在

我觉得这个问题已经得到了回答,但是我没有正确地表达这个问题。在


Tags: 对象keyidstring关系addresses地址column
1条回答
网友
1楼 · 发布于 2024-10-01 07:18:05

这在“Specifying Alternate Join Conditions”下的SQLAlchemy文档中有介绍。在

class User(Base):
    __tablename__ = 'user'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    boston_addresses = relationship("Address",
                    primaryjoin="and_(User.id==Address.user_id, "
                        "Address.city=='Boston')")

class Address(Base):
    __tablename__ = 'address'
    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('user.id'))

    street = Column(String)
    city = Column(String)
    state = Column(String)
    zip = Column(String)

相关问题 更多 >