Python3中Flask使用flask_sqlalchemy的的问题以及解决

来源:互联网 发布:夏易网络 王宇阳 编辑:程序博客网 时间:2024/06/06 14:09

(一)

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

/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 '
提示我们需要设定参数‘True’ 或者 ‘’Flase‘
是说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:root@127.0.0.1/tushare?charset=utf8' #这是Python2的
但是在Python3进行了改变:
正确的连接应该是这样
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@127.0.0.1/tushare?charset=utf8' #这是Python3的
为什么会这样我也不知道,到时看看源码再说

如果不这样连接会怎么样,恭喜你会爆出一堆你不知道是什么鬼的错误
return __import__('MySQLdb')ModuleNotFoundError: No module named 'MySQLdb'
解决方法就是上面的Python2请无视

Flask-SQLAlchemy的中文文档连接Flask-SQLAlchem








原创粉丝点击