繁体   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