Python3中Flask使用flask_sqlalchemy的的問題以及解決
阿新 • • 發佈:2018-10-31
(一)
Python3在flask_sqlalchemy中相比改動了一些比如模組的匯入。
在Python2中應該是 from flask.ext.sqlalchemy impot SQLAlchemy
雖然在Python3中這樣使用其實不會錯但是Python3中不贊成這樣使用可能在未來會取消flask.ext.sqlalchemy這是個趨勢
在Python3中建議使用from flask_sqlalchemy import SQLAlchemy
(二)
第一次使用這個模組需要對原始碼進行改變及設定:
設定SQLALCHEMY_TRACK_MODIFICATIONS 為True或False
提示我們需要設定引數‘True’ 或者 ‘’Flase‘ 是說/home/air/Desktop/microblog/flask/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py:839: 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 '
SQLALCHEMY_TRACK_MODIFICATIONS
不能預設什麼都沒有,
得設定其為
True
或者
False
,
所以就去
/flask/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py
這個檔案中進行更改,
提示給的839行,在前面幾行的位置有這樣的
setdefault
,
把None改為True;:
...
833 track_modifications = app.config.setdefault(
834 'SQLALCHEMY_TRACK_MODIFICATIONS', True #這裡,一開始是None需要改變為True or Flase
835 )
...
(三) Python3與Python2中連線也是有區別的 這裡不詳講參考連線為點選開啟連結
大概就是如下:
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:[email protected]/tushare?charset=utf8' #這是Python2的但是在Python3進行了改變: 正確的連線應該是這樣
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]/tushare?charset=utf8' #這是Python3的為什麼會這樣我也不知道,到時看看原始碼再說
如果不這樣連線會怎麼樣,恭喜你會爆出一堆你不知道是什麼鬼的錯誤
return __import__('MySQLdb') ModuleNotFoundError: No module named 'MySQLdb'解決方法就是上面的Python2請無視
Flask-SQLAlchemy的中文文件連線 Flask-SQLAlchem