ldr*_*drg 7 python sqlalchemy type-hinting flask-sqlalchemy
如何使用 flask_sqlalchemy 包获得 PEP 484 类型提示?我看到第三方提供了SQLAlchemy 的类型提示,但是是否可以将这些提示用于使用flask_sqlalchemy 定义的模型和查询?
有一个Flask SQLAlchemy Stubs,您可以将其添加到 mypy 配置中,如下所示
[mypy]
plugins = flasksqlamypy
Run Code Online (Sandbox Code Playgroud)
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]]"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
403 次 |
| 最近记录: |