如何使用flask_sqlalchemy正确注释类型?
我有一个工作烧瓶应用程序,它使用SQLAlchemy/如何使用flask_sqlalchemy正确注释类型?,flask,sqlalchemy,flask-sqlalchemy,mypy,python-typing,Flask,Sqlalchemy,Flask Sqlalchemy,Mypy,Python Typing,我有一个工作烧瓶应用程序,它使用SQLAlchemy/Flask\u SQLAlchemy。为了给您留下印象,我创建了一个超级精简版(apps.py和models.py)。该应用程序运行良好。问题是mypy抱怨models.py中使用了db.Model: error: Name 'db.Model' is not defined 原因很可能是在调用db.init\u app(app)时创建的。我怎样才能解决这个问题?还有比忽略它更好的选择吗 # type: ignore app.py mod
Flask\u SQLAlchemy
。为了给您留下印象,我创建了一个超级精简版(apps.py
和models.py
)。该应用程序运行良好。问题是mypy
抱怨models.py
中使用了db.Model
:
error: Name 'db.Model' is not defined
原因很可能是在调用db.init\u app(app)
时创建的。我怎样才能解决这个问题?还有比忽略它更好的选择吗
# type: ignore
app.py
models.py
既然你在使用炼金术,你试过这个吗 models.py 编辑 这就是我的app.py的样子
from .settings import ProdConfig
def create_app(config_object=ProdConfig):
app = Flask(__name__)
app.config.from_object(config_object)
register_blueprints(app)
return app
你需要
引自
将MyPy与SQLAlchemy模型一起使用
如果您正在为Python使用PEP 484静态类型检查器,
随附MyPy插件。
该插件是针对SQLAlchemy声明性模型定制的
我无法再现这个错误。我使用了mypy0.660和python3.6。你能提供版本信息吗?谢谢@高于c_水平,我也不能用最小的例子重现错误。。。有趣。我仍然在我真正的代码库中得到它。我尝试调整示例它是整个
app.py
文件吗?当错误发生时,您甚至没有尝试运行它?(app.run()
)顺便说一句,在函数中使用app不太舒服,您真的不应该这样做。。。。尝试将db
和app
作为全局变量,这样您就可以执行db=SQLAlchemy(app)
@在c_级别以上我创建了一个示例,可以看到这个问题:我不知道为什么它出现在这个文件夹中,而不是出现在我上面的代码中。除了在modes.py
中定义app
而不是在app.py
中定义之外,还有什么别的吗?这导致了许多其他问题。
from app import db
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.String, primary_key=True, nullable=False)
username = db.Column(db.String, unique=True)
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
db = SQLAlchemy(app)
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.String, primary_key=True, nullable=False)
username = db.Column(db.String, unique=True)
from .settings import ProdConfig
def create_app(config_object=ProdConfig):
app = Flask(__name__)
app.config.from_object(config_object)
register_blueprints(app)
return app