Flask应用报错:'SQLAlchemy'对象无'model'属性,附代码求助
解决Flask-SQLAlchemy的AttributeError: 'SQLAlchemy' object has no attribute 'model'问题
这个错误其实是个很容易犯的拼写小失误——你把SQLAlchemy的模型基类名称写错了:db.model应该改成db.Model(首字母M要大写)。
Flask-SQLAlchemy里规定,所有自定义的数据库模型都必须继承自db.Model这个类,小写的model并不是SQLAlchemy实例的属性,所以才会抛出这个找不到属性的错误。
修正后的完整代码
from flask import Flask from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost/flask-movie' db = SQLAlchemy(app) # 关键修正:将db.model改为db.Model class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) email = db.Column(db.String(120), unique=True, nullable=False) def __init__(self, username, email): self.username = username self.email = email def __repr__(self): return '<User %r>' % self.username
额外小提醒
- Flask-SQLAlchemy的核心类基本都是驼峰命名规范,比如
Model、Column、String这些,写的时候注意大小写别搞错。 - 如果你用的是Flask-SQLAlchemy 3.x及以上版本,更推荐用应用工厂模式配合
db.init_app(app)来初始化数据库,不过你当前的写法在旧版本中是可以正常运行的。
内容的提问来源于stack exchange,提问作者Ezrqn Kemboi
相关产品推荐
相关产品推荐

