我有一个使用SQLAlchemy / flask_sqlalchemy
的工作瓶应用程序。为了给您一个印象,我创建了一个超级精简版本(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)
发布于 2020-07-16 20:16:35
你需要https://pypi.org/project/sqlalchemy-stubs/
来自use.html的报价
MyPy与SQLAlchemy模型的结合 如果您对Python使用PEP 484静态类型检查器,则MyPy插件将包含在用于SQLAlchemy的类型存根中。该插件是针对SQLAlchemy声明性模型定制的。
发布于 2020-07-13 20:48:30
既然你在使用flask_sqlalchemy,你试过这个吗,
models.py
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)
编辑这是我的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
https://stackoverflow.com/questions/62794599
复制相似问题