如何获得flask_sqlalchemy类的PEP 484类型提示?

时间:2019-01-09 00:43:30

标签: python sqlalchemy flask-sqlalchemy type-hinting

如何通过flask_sqlalchemy软件包获取PEP 484类型提示?我看到第三方提供了type hints for SQLAlchemy,但是是否可以将它们连接到flask_sqlalchemy定义的模型和查询中?

1 个答案:

答案 0 :(得分:1)

有一个 Flask SQLAlchemy Stubs,您可以将其添加到 mypy 配置中,如下所示

[mypy]
plugins = flasksqlamypy

Flask SQLAlchemy 特定的代码输入代码可以放在 TYPE_CHECKING 常量内。

这是一个例子:

from typing import TYPE_CHECKING
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

if TYPE_CHECKING:
    from flask_sqlalchemy.model import Model

    BaseModel = db.make_declarative_base(Model)
else:
    BaseModel = db.Model

class User(BaseModel):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)

user = User(id=42, name=42)  # Error: Incompatible type for "name" of "User"
                             # (got "int", expected "Optional[str]")
user.id  # Inferred type is "int"
User.name  # Inferred type is "Column[Optional[str]]"
相关问题