[Python] SQLAlchemy 与 Pyright 相爱相杀的故事
原文中文,约2900字,阅读约需7分钟。
📝
内容提要
介绍使用 SQLAlchemy 时,Pyright 类型检查报错的解决方法
🎯
关键要点
-
Pyright 是一款强大的静态类型检查器,使用 SQLAlchemy 时可能会遇到类型检查报错。
-
示例代码中定义了一个 User 类,包含 id 和 name 属性。
-
Pyright 报错提示 user.name 的类型不能赋值给 print_username 函数的参数 name。
-
解决方法是安装 sqlalchemy-stubs,报错消失,Pyright 正确识别 user.name 为 str 类型。
-
安装 stub 包后,Pyright 自动识别类型,无需额外配置。
-
Pyright 在安装前根据 SQLAlchemy 源代码解析类型,安装后优先使用 stub 中定义的接口类型。
-
Column 类型定义为 Type[TypeEngine[_T]],强制约束返回的类型为 T,类似于 Java 中的泛型。
🏷️