3
我在sqlalchemy中很新。sqlalchemy - 在外部鏈接的ON子句中添加任意條件
我試圖在一個外連接的ON子句中添加一些任意的子句而不必重寫我的連接條件。
舉個例子,讓我們2個表:
class adm_funcionario(Base):
__tablename__ = "adm_funcionario"
idFuncionario = Column(Integer, nullable=False, primary_key=True, autoincrement=True)
nome = Column(VARCHAR(45), nullable=False)
foto = Column(BLOB)
apelido = Column(VARCHAR(32), default='')
class adm_funcionario_acesso(Base):
__tablename__ = "adm_funcionario_acesso"
idFuncionario = Column(Integer, ForeignKey('adm_funcionario.idFuncionario'), nullable=False, primary_key=True)
dataHora = Column(DATETIME, nullable=False, primary_key=True)
estacao = Column(VARCHAR(45), nullable=False)
idSessaoDB = Column(Integer, nullable=False)
如果我這樣做:
qr = session.query(adm_funcionario).outerjoin(adm_funcionario_acesso)
print(qr)
則返回第二個表ON子句預期。但是,我怎麼能把另一個過濾器放在第二個表格中?
我嘗試使用filter
子句,但它將新條件放在where
中,而不是在ON
子句中。
我發現到現在唯一的解決辦法是重寫條件completelly(SQLAlchemy的知道如何做的加入,我想只是增加一個新的狀態在這個特定表):
qr = session.query(adm_funcionario)
qr = qr.outerjoin(adm_funcionario_acesso, and_(adm_funcionario_acesso.idFuncionario==adm_funcionario.idFuncionario, adm_funcionario_acesso.idSessaoDB > 4))
是有沒有辦法做到這一點,而不是完全重寫ON子句?
感謝