KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

关于flask-sqlalchemy中出现的 KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'错误

网上资料都是说因为用了2.2/2.3版本的flask-sqlalchemy的缘故

给出的解决方案都是很扯淡的回退了一下版本,回到2.0.


经过研究 发现原因很显然不是这样子 而是代码从一开始逻辑就不对

研究我们的代码

app/__init__.py

from flask import Flask

app = Flask(__name__)
app.debug = True from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint,url_prefix="/admin")
app/models.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 配置数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/blog"
# 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False # 绑定app至SQLAlchemy
db = SQLAlchemy(app) # 会员模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
... ... if __name__ == "__main__": db.create_all()

app/__init__.py 和 app/models.py 中 两次分别实例化 Flask 类,生成 app 对象

而 app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False 是在模型文件中设置的

但是模型中的 app 对象并不是Flask运行时的 那个 app 对象

只是用来初始化数据库时临时用到的 app 对象

所以在访问页面的时候会报错 KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

应该修改成这样

app/__init__.py

from flask import Flask

app = Flask(__name__)
app.debug = True from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint,url_prefix="/admin") # 配置数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/blog"
# 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False from app.models import db db.init_app(app)
app/models.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() # 会员模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
... ... if __name__ == "__main__": app = Flask(__name__) # 配置数据库
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:123456@127.0.0.1:3306/blog"
# 如果设置成 True (默认情况),Flask-SQLAlchemy 将会追踪对象的修改并且发送信号。
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False # 绑定app至SQLAlchemy
db = SQLAlchemy(app) db.create_all()

Flask報錯 KeyError 'SQLALCHEMY_TRACK_MODIFICATIONS'.md的更多相关文章

  1. Flask报如下错误: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.

    在同一个项目中由于flask_sqlalchemy版本不同,有时会报如下错误 错误信息如下: flask_sqlalchemy\__init__.py:: UserWarning: SQLALCHEM ...

  2. Eclipse報錯:Could not find or load main class

    代碼正確,但在Eclipse中無法運行,一直報錯: Could not find or load main class

  3. 鏈接Redis報錯`AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379]

    問題 鏈接Redis報錯`AUTH` failed: ERR Client sent AUTH, but no password is set [tcp://127.0.0.1:6379] 解決 啟動 ...

  4. 報錯:One or more validation errors were detected during model generation:System.Data.Edm.EdmEntityType: : EntityType 'Movie' has no key

    報錯:One or more validation errors were detected during model generation:System.Data.Edm.EdmEntityType ...

  5. (ros/moveit)cob_simulation報錯

    cob_simulation報錯 依照官網說明 http://wiki.ros.org/cob_bringup_sim 1. git clone https://github.com/ipa320/c ...

  6. Maven項目打包報錯:Plugin execution not covered by lifecycle configuration

    Maven項目打包報錯:Plugin execution not covered by lifecycle configuration 使用Eclipse导入一个新的maven项目时不时的会遇到这个错 ...

  7. 使用flask-alchemy 过程中报错KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

    在网上找了很多, 大多数说是必须要给 SQLALCHEMY_TRACK_MODIFICATIONS 一个默认值,尝试修改alchemy 源码,,但是还是不起作用 最后阅读源码 , self.app = ...

  8. flask报错 KeyError: <flask.cli.ScriptInfo object at 0x000001638AC164E0>

    (flask_venv) D:\DjangoProject\flask_test>flask db init Traceback (most recent call last): File &q ...

  9. Oracle12c client安裝報錯[INS-20802] Oracle Net Configuration Assistant failed完美解決

    Doc ID 2082662.1 1.錯誤碼 Installation Of Oracle Client 12.1.0.2.0 (32-bit) Fails With An Error Message ...

随机推荐

  1. .net core webapi通过中间件获取请求和响应内容

    本文主要根据中间件来实现对.net core webapi中产生的请求和响应数据进行获取并存入日志文件中: 这里不详细介绍日志文件的使用.你可以自己接入NLog,log4net,Exceptionle ...

  2. [golang]使用gomail发邮件(在Go中发送电子邮件的最佳方式)

    1 前言 定义邮箱服务器连接信息,如果是网易邮箱 pass填密码,qq邮箱填授权码(客户端专用密码). gomail包: go get gopkg.in/gomail.v2 更多功能可以参考 http ...

  3. 2019 竞技世界java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.竞技世界等公司offer,岗位是Java后端开发,最终选择去了竞技世界. 面试了很多家公司,感觉大部分公司考察的点 ...

  4. 【开发笔记】- yum离线安装

    本方案基本思路是在一个可以联网的系统中下载rpm安装包,然后传到无法联网的目标操作系统,建立安装源,进行安装.为了减少不必要的麻烦,在本地用虚拟机安装一个和目标操作系统一模一样的但是没有安装任何额外软 ...

  5. Java开发环境之MyEclipse

    查看更多Java开发环境配置,请点击<Java开发环境配置大全> 拾贰章:MyEclipse安装教程 1)下载MyEclipse安装包 http://www.myeclipsecn.com ...

  6. 原生php phpmailer 发送邮件 email

    首先去github下载phpmailer https://github.com/PHPMailer/PHPMailer/ 取得里面的src文件夹中的文件 然后demo如下 首先引用命名空间 use那里 ...

  7. Django-模型层(多表操作)

    目录 1.创建模型 1.1方式一:自行创建第三张表 1.2方式二:通过ManyToManyField自动创建第三张表 1.3关于db_column和verbose_name 1.4关于on_delet ...

  8. Gerrit代码评审流程

    Gerrit代码评审流程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.代码评审流程(如下图所示) 第一步:贡献者报建一个提交,并通过之前从gerrit下载的commit-ms ...

  9. Python入门篇-数据结构树(tree)篇

    Python入门篇-数据结构树(tree)篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.树概述 1>.树的概念 非线性结构,每个元素可以有多个前躯和后继 树是n(n& ...

  10. sqlzoo易错题

    https://sqlzoo.net/wiki/SELECT_names 答案在:https://github.com/codyloyd/sqlzoo-solutions/blob/master/SQ ...