我需要执行以下查询:

select field11, field12
from Table_1 t1
left outer join Table_2 t2 ON t2.tbl1_id = t1.tbl1_id
where t2.tbl2_id is null

我用python编写了以下课程:

class Table1(Base):
   ....

class Table2(Base):
   table_id =  Column(
        Integer,
        ForeignKey('Table1.id', ondelete='CASCADE'),
    )
    ....

我如何从下面到达上面?

推荐答案

q = session.query(Table1.field1, Table1.field2)\
    .outerjoin(Table2)\ # use in case you have relationship defined
    # .outerjoin(Table2, Table1.id == Table2.table_id)\ # use if you do not have relationship defined
    .filter(Table2.tbl2_id == None)

应该这样做,假设field1field2来自Table1,并且您定义了一种关系:

class Table2(Base):
    # ...
    table1 = relationship(Table1, backref="table2s")

Sql相关问答推荐

调用存储过程时SQL服务器TDS协议响应问题

帮助修复查询以识别SQL DW中数据中的递归关系

将SEMI JOIN、ANTI JOIN转换为非连接SQL

postgresql插入json不工作

查询多个表并返回合并在联合列上的所有表中的所有行

当我们加入两个表时,我们可以省略GROUP BY中的列名吗?

直接加法(1+1)与聚合函数SUM(1+1)的区别是什么

如何从Spark SQL的JSON列中提取动态数量的键值对

Oracle中的时间戳

使用拆分器将已分组的不同值连接在一起

postgres中的条件索引和触发器

在SQL中转换差异表的多列

STContains、STIntersections和STWithin返回错误的地理结果

SQL 多个不满足的条件失败

更新之前如何获得价值

多行状态下的分组查询判断状态

COBOL\DB2作业(job)需要帮助?快来获取专业指导!

如何按日期和位置对最近 3 个报告日期的 SQL 查询结果进行透视?

如何将多行的查询结果合并为一行

使用 SAVE TRANSACTION 时 BEGIN 和 COMMIT 语句的数量不匹配