AttributeError:' _AppCtxGlobals'对象没有属性' db'

时间:2015-06-16 22:06:28

标签: python database flask request flask-sqlalchemy

我真的不明白它的问题是什么?我想在请求函数之前和之后使用Flask,否则我的会话不会关闭,然后我就会超时。这些是我的应用程序设置,请帮助我理解为什么我会得到" AttributeError:' _AppCtxGlobals'对象没有属性' db'":

app = Flask(__name__)
bcrypt = Bcrypt(app)
login_manager = LoginManager()
login_manager.init_app(app)

app.secret_key = 'somekey'
app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://postgres:password@localhost/database'

db = SQLAlchemy(app)
from models import *

login_manager.login_message = 'Please login first.'
login_manager.login_view = 'authenticate'

#################################
#################################

@login_manager.user_loader
def load_user(user_id):
    """user_loader - A decorator to mark the function responsible for loading a user from whatever data source we use."""
    return User.query.filter(User.id == int(user_id)).first()


@app.before_request
def before_request():
    g.db.connect()
    g.user = current_user

@app.after_request
def after_request(response):
    """Close the database connection after each request"""
    g.db.close()
    return response

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试将Flask文档中的SQLite示例与Flask-SQLAlchemy扩展相结合,但两者并不相关。没有g.db,您使用db对象与数据库进行交互。

删除before_requestafter_request功能。