SQLAlchemy将select语句从case语句插入到FROM子句中

时间:2014-11-05 12:47:04

标签: python sql sqlalchemy

我将case语句保存在变量中:

article_video_exists = exists(
    select([1], correlate=False, from_obj=article_video_t).where(
        article_video_t.c.article_id == article_t.c.id))

has_videos_case = case([(article_video_exists, 1), ], else_=0).label(
    'has_videos')

并使用此案例

select([has_videos_case], from_obj=article_t)

执行后,我在查询FROM语句中看到了

FROM article_t, 
     (select 1 
      from article_video_t 
      where article_video_t.article_id=article_t.id) 

和我应该使用别名的错误。 我尝试使用别名for select,但它并没有解决我的问题。 我尝试将correlate = False传递给所有select子句,但它没有帮助,但是如果我在不使用变量的情况下在final select子句中按原样传递case,那么它的工作并不会生成无效的FROM子句。

但是在此之后我有很多重复代码,那么在这种情况下如何使用变量?感谢。

1 个答案:

答案 0 :(得分:0)

使用select(...)。correlate_except(article_video_t)修复。