【发布时间】:2020-07-08 12:15:09
【问题描述】:
我有一个使用 SQLAlchemy / flask_sqlalchemy 的工作 Flask 应用程序。为了给你一个印象,我创建了一个超级精简的版本(apps.py 和models.py)。该应用程序有效。问题是mypy 抱怨db.Model 在models.py 中的使用:
error: Name 'db.Model' is not defined
原因很可能是调用db.init_app(app)时创建的。我怎样才能解决这个问题?有没有比忽略它更好的选择?
# type: ignore
app.py
>from flask import Flask
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
def create_app():
app = Flask(__name__, template_folder="templates")
db.init_app(app)
return app
models.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)
【问题讨论】:
-
我无法重现该错误。我使用了 mypy 0.660 和 python 3.6。能否提供版本信息?谢谢!
-
@above_c_level 我也无法用最小的例子重现错误......有趣。我仍然在我的真实代码库中得到它。我尝试调整示例
-
是整个
app.py文件吗?当错误发生时你甚至没有尝试运行它?(app.run())顺便说一句,在函数中使用应用程序不太舒服,你真的不应该这样做....尝试把db和app作为全局变量,你可以这样做db = SQLAlchemy(app) -
@above_c_level 我创建了一个可以看到问题的示例:github.com/MartinThoma/algorithms/tree/master/medium/…
-
我不知道为什么它出现在这个文件夹中,而不是我上面的代码中。
标签: flask sqlalchemy flask-sqlalchemy mypy python-typing