使用flask-alchemy 過程中報錯KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'


在網上找了很多, 大多數說是必須要給 SQLALCHEMY_TRACK_MODIFICATIONS 一個默認值,嘗試修改alchemy 源碼,,但是還是不起作用 

最后閱讀源碼 ,

 self.app = app = db.get_app()
    track_modifications = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']

源碼就是這句報錯,,說key沒有,,那好,我直接給你設置一個值行了吧。。
於是我再上面加了一句,
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True ..
啟動,然兵亂, 還是報錯,不過是另一個錯誤。。

 

看這意思是我沒有初始化 sqlAlchemy ..

然后我的代碼 sqlconfig.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@192.168.99.100/activiti_api'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

沒問題啊,我初始化了啊 。。‘’

看了半天, 我去,,原來是我在啟動的地方重新定義了一個app .

文件 app.py

import flask
from mysql.sqlconfig import Ip,db
app=flask.Flask(__name__)  這是一個新的app, 所以報key 錯誤,其實是我根本就沒有初始化app.config . 

@app.route('/')
def index():
    ips = Ip.query.all()
    return flask.render_template('index.html')


if __name__ == '__main__':
    app.debug=True
    app.run()

 

所以把 

app=flask.Flask(__name__) 這句去掉並引入mysqlconfig 中db 就好了 。。 
最后吐槽一下python 對跨文件夾的 極其不友好,是不是python 不適合大型項目開發,因為我不能把所有文件都放到一個文件夾下。。
比如上面
flask.render_template('index.html') , index.html 原來我是放到和 app.py 同級 templates包中。。但是現在必須要挪到和 mysqlconfig.py 的對應目錄。。


其次吐槽一下python編程中友好提示,簡直就是災難,完全沒有提示,調用一個方法,我完全看不出來他要我傳什么參數,只有請求了才知道對錯, 作為一個從java過來的程序猿,真心累。

初學者,希望大神能解解答我上面的兩個疑問: 文件夾支持和編程體驗 、

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM