在 flask 框架写登录注册系统中,总是报这个错误是怎么回事? 求大神告知,谢谢!(* C:\Python27\lib\site-packages\flask_sqlalchemy__init__.py:794: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by default in the future. Set it to True or False to suppress this warning. 'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '* Debugger is active!**。)。
1条回答 默认 最新
- 你知我知皆知 2024-08-07 06:37关注
以下回答参考 皆我百晓生、券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。
这个问题是由于 Flask-SQLAlchemy 的一个警告导致的。Flask-SQLAlchemy 是 Flask 库的一部分,用于处理数据库操作。当你尝试使用 SQLAlchemy 来查询或更新数据时,它会生成一些警告来提醒你关于某些特性是否应该被启用或者禁用。
在你的特定情况下,Flask-SQLAlchemy 在运行时检测到
SQLALCHEMY_TRACK_MODIFICATIONS
关键字是否被设置为True
或者False
。如果你没有设置这个关键字,那么 Flask-SQLAlchemy 将不会跟踪数据库的修改,并且这些修改将不被追踪。因此,在你的代码中,当你试图通过 ORM 查询或更新数据时,你会看到这个警告:
from flask import Flask, render_template, request app = Flask(__name__) # 设置SQLAlchemy引擎和模型 engine = create_engine('sqlite:///example.db') Base.metadata.create_all(engine) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 从表单提交的数据获取用户名和密码 username = request.form['username'] password = request.form['password'] # 使用ORM查询用户信息 user = User.query.filter_by(username=username).first() # 如果查询成功,检查密码是否正确 if user and user.password == password: return redirect(url_for('index')) else: error = "用户名或密码错误" return render_template('login.html', error=error)
在这个例子中,当用户提交表单并尝试登录时,如果密码输入正确,就会跳转到 'index' 页面。但是,如果你忘记设置
SQLALCHEMY_TRACK_MODIFICATIONS
,那么在render_template
中,Flask-SQLAlchemy 将会抛出这个警告。解决方法很简单:确保你在启动 Flask 应用程序之前设置了
SQLALCHEMY_TRACK_MODIFICATIONS
。例如,你可以这样做:import os if __name__ == '__main__': app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.run(debug=True)
这将会关闭
SQLALCHEMY_TRACK_MODIFICATIONS
关键字,从而避免出现警告。解决 无用评论 打赏 举报