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

继续阅读