[英]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.