sqlalchemy filter on related table

69 阅读1分钟

from sqlalchemy import create_engine, Column
from sqlalchemy.orm import sessionmaker, declarative_base
from sqlalchemy import String, Integer 

class TbA(Base):
    __tablename__ = "table_a" 
    id = Column(Integer, primary_key=True) 
    name = Column(String(30)) 

class TbB(Base):
    __tablename__ = "table_b" 
    id = Column(Integer, primary_key=True)
    email = Column(String(30))
    # logic foreign key
    tb_a_id = Column(Integer, ForeignKey('table_a.id', use_alter=True)) 


# when query by conditions
query_conditions = []
query_exp_conditions = [TbB.email == 'xx']
query_conditions.extend(query_exp_conditions)

objects = session.query(TbA).join(TbB).filter(and_(*query_params))