簡體   English   中英

如何輸入提示 SQLAlchemy 查詢?

[英]How can I type hint SQLAlchemy Queries?

我在 VSCode 中使用 Pylance(類型提示由 PyRight 提供支持),並具有以下 function:

def sample(session: sqlalchemy.orm.Session) -> sqlalchemy.orm.query.Query:
    return session.query((MyModel)

在查看 Pylance 的類型推斷時,這個 function 實際上具有 Query[Unknown] 的返回類型。 當我將類型提示更改為sqlalchemy.orm.query.Query[MyModel]時,Pylance 可以正確推斷出相關類型。 這很棒,直到我實際運行代碼並得到TypeError: 'type' object is not subscriptable

我為什么會收到此錯誤是有道理的,但似乎必須有某種方法可以使這項工作正常進行,否則 Pylance 只是在嘲弄我。 我發現的一種解決方法(確實有效)是:

def sample(session: sqlalchemy.orm.Session) -> (
    sqlalchemy.orm.query.Query[MyModel]
    if typing.TYPE_CHECKING
    else sqlalchemy.orm.query.Query
):
    return session.query(MyModel)

但這顯然很糟糕,我討厭它。 我也許可以制作一個幫助器 function 來提取它並且更具可讀性,但我真的覺得這應該是可能的,沒有一個糟糕的解決方法!

def sample(session: sqlalchemy.orm.Session) -> 
"sqlalchemy.orm.query.Query[MyModel]":
    return session.query(MyModel)

實際上工作得很好,我覺得很愚蠢。 如果有任何其他方式,我很樂意接受這個答案!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM