使用SQLALCHEMY 出现warning 的问题解决
出现错误:
D:\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 '
解决方案:
配置文件增加以下内容:(config.py)
SQLALCHEMY_TRACK_MODIFICATIONS = True
SQLALCHEMY_COMMIT_TEARDOWN = True
(一)
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 '
SQLALCHEMY_TRACK_MODIFICATIONS
不能默认什么都没有,
得设置其为
True
或者
False
,
所以就去所提示的路径中
/flask/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py
这个文件中进行更改,
提示给的839行,在前面几行的位置有这样的
setdefault
,
把None改为True;
- <span style="color:rgb(63,63,63);"></span>
- <span style="color:rgb(63,63,63);">...
- 833 track_modifications = app.config.setdefault(
- 834 'SQLALCHEMY_TRACK_MODIFICATIONS', </span><span style="color:rgb(255,0,0);">True #这里,一开始是None需要改变为True or Flase</span><span style="color:rgb(63,63,63);">
- 835 )
- ...</span>
track_modifications = app.config.setdefault(
789 'SQLALCHEMY_TRACK_MODIFICATIONS', True
790 )
但是在Python3进行了改变:
解决方法就是上面的Python2请无视
python 数据操作的时候,
class Record(db.Model):
__tablename__ = 'reg_records'
request_id = db.Column(db.Integer, primary_key = True)
title = db.Column(NVARCHAR())
class Field(db.Model):
__tablename__ = 'reg_fields'
request_id = db.Column(db.Integer, primary_key= True)
name = db.Column(NVARCHAR(), primary_key = True)
报以下错误:
>>> print(admin_role.id)