[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 中的泛型。
➡️