2014-11-05 136 views
0

我已經case語句保存在像變量:SQLAlchemy中插入來自case語句select查詢到FROM子句

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) 

和我應該使用別名的錯誤。 我試過使用別名進行選擇,但它沒有解決我的問題。 我試圖將correlate = False傳遞給所有select子句,但它沒有幫助,但是如果我在最後的select子句中如果沒有使用變量的情況下通過大小寫,它的工作並不會生成無效的FROM子句。

但之後我有很多重複的代碼,那麼在這種情況下如何使用變量來處理呢?謝謝。

+0

我不確定您的錯誤是否與您展示的代碼有關,因爲我希望在您的表達式中的某個地方看到「EXISTS」,但我沒有。 – van 2014-11-06 08:26:39

+0

我只顯示FROM子句,沒有選擇。 select語句對於存在且正確的表名是正確的。但FROM也有這個選擇子查詢,並提出別名要求的錯誤 – Lagovas 2014-11-06 13:34:54

+0

這是哪裏* select子查詢*來自哪裏?另一種構造?請分享更多的信息 – van 2014-11-06 23:38:21

回答

0

通過使用select(...)。correlate_except(article_video_t)來修復。