第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在sqlalchemy中選擇列存在

如何在sqlalchemy中選擇列存在

江戶川亂折騰 2021-12-21 16:07:32
在SQLAlchemy的存在文檔說,使用exists創(chuàng)建了一個SQL語句EXISTS (SELECT 1 ...)。我怎樣才能EXISTS選擇我選擇的列?我有兩個模型喜歡這樣:class Query:    id = Column(UUID)    content = Column(String)    ...class Review:    id = Column(UUID)    query_id = Column(UUID, ForeignKey('query.id'))    ...我想進行這需要讓所有的復(fù)雜查詢id小號QueryS的沒有Review。為此,我編寫了以下 python:reviewed_query_ids_sql_query = session.query(models.Review.query_id)filtered_queries_sql_query = session.query(models.Query.id).where(~reviewed_query_ids_sql_query.exists())但這會為以下生成以下 SQL filtered_queries_sql_query:SELECT queries.id FROM queries WHERE (EXISTS (SELECT 1 FROM reviews))但是,原始查詢reviewed_query_ids_sql_query是SELECT reviews.query_id AS reviews_query_id FROM reviewsSELECT 1當(dāng)基礎(chǔ)查詢執(zhí)行 a 時,為什么存在SELECT <column>?我希望查詢做的是SELECT query_id FROM reviews在帶有EXISTS子句的查詢中。我怎樣才能做到這一點?
查看完整描述

1 回答

?
慕的地8271018

TA貢獻1796條經(jīng)驗 獲得超4個贊

我找到了一個解決方案,但我不確定它是否是最佳的:


from sqlalchemy import exists


reviewed_query_ids_sql_query = ~exists(

    session.query(models.Review.query_id)

        .filter(models.Query.id == models.Review.query_id)

        .enable_eagerloads(False).with_labels().statement)


filtered_queries_sql_query = session.query(models.Query.id).where(reviewed_query_ids_sql_query)

我使用這些函數(shù).enable_eagerloads(False).with_labels().statement是因為它們用于底層實現(xiàn),exists我認為它們可以提高性能(盡管我不確定也沒有深入研究)。


查看完整回答
反對 回復(fù) 2021-12-21
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號