【问题标题】:Self join query to SQlAlchemy ORM using alias使用别名自联接查询到 SQLAlchemy ORM
【发布时间】:2021-09-17 23:43:32
【问题描述】:

我正在尝试将以下 SQL 查询转换为 SQLAlchemy 语句并遇到错误:

sqlalchemy.exc.InvalidRequestError: 不知道如何加入 。请使用 .select_from() 方法来建立一个显式的左侧,以及 如果不存在,则提供明确的 ON 子句以帮助解决 模棱两可。

SQL 查询:

select t2.* 
from task as t1 
inner join task as t2 on t1.g_id  = t2.g_id  
where t1.id = 'task_id';

SQLAlchemy 语句:

table_a = aliased(Task)
table_b = aliased(Task)
query = (
    self.db.query(Task)
    .join(table_a, table_b).filter(table_b.group_id == table_a.group_id)
    .filter(table_a.id == task_id)
   )

尝试按照关于别名的 SQLAlchemy 文档进行操作,但无法找出错误。

【问题讨论】:

    标签: sql python-3.x sqlalchemy


    【解决方案1】:
    t1 = aliased(Task)
    t2 = aliased(Task)
    
    query = (
        self.db.query(t2)
        .select_from(t1)
        .join(t2, t2.g_id == t1.g_id)
        .filter(t1.id == task_id)
       )
    

    【讨论】:

      猜你喜欢
      • 2011-07-18
      • 2018-07-19
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 2014-12-26
      • 1970-01-01
      相关资源
      最近更新 更多