数据库初始化不了
来源:4-6 生成用户数据

aumujun
2021-05-17
上完4-4准备调试,数据库报如下错误,老师帮忙看看呢
(restful) ✘ mac@macdeMac-mini ~/Documents/restful python3 ginger.py
/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/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 '
Traceback (most recent call last):
File "ginger.py", line 3, in <module>
app = create_app()
File "/Users/mac/Documents/restful/app/app.py", line 19, in create_app
register_plugin(app)
File "/Users/mac/Documents/restful/app/app.py", line 12, in register_plugin
db.create_all()
File "/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 963, in create_all
self._execute_for_all_tables(app, bind, 'create_all')
File "/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 955, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), **extra)
File "/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 896, in get_engine
return connector.get_engine()
File "/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 556, in get_engine
self._sa.apply_driver_hacks(self._app, info, options)
File "/Users/mac/.local/share/virtualenvs/restful-V3yZnvwa/lib/python3.7/site-packages/flask_sqlalchemy/__init__.py", line 831, in apply_driver_hacks
info.query.setdefault('charset', 'utf8')
AttributeError: 'sqlalchemy.cimmutabledict.immutabledict' object has no attribute 'setdefault'
代码如下
from flask import Flask
def register_blueprint(app):
from app.api.v1 import create_blueprint_v1
app.register_blueprint(create_blueprint_v1(), url_prefix='/v1')
def register_plugin(app):
from app.models.base import db
db.init_app(app)
with app.app_context():
db.create_all()
def create_app():
app = Flask(__name__)
app.config.from_object('app.config.setting')
app.config.from_object('app.config.secure')
register_blueprint(app)
register_plugin(app)
return app
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy as _SQLAlchemy, BaseQuery
from sqlalchemy import inspect, Column, Integer, SmallInteger, orm
from contextlib import contextmanager
class SQLAlchemy(_SQLAlchemy):
@contextmanager
def auto_commit(self):
try:
yield
self.session.commit()
except Exception as e:
db.session.rollback()
raise e
class Query(BaseQuery):
def filter_by(self, **kwargs):
if 'status' not in kwargs.keys():
kwargs['status'] = 1
return super(Query, self).filter_by(**kwargs)
db = SQLAlchemy(query_class=Query)
class Base(db.Model):
__abstract__ = True
create_time = Column(Integer)
status = Column(SmallInteger, default=1)
def __init__(self):
self.create_time = int(datetime.now().timestamp())
@property
def create_datetime(self):
if self.create_time:
return datetime.fromtimestamp(self.create_time)
else:
return None
def set_attrs(self, attrs_dict):
for key, value in attrs_dict.items():
if hasattr(self, key) and key != 'id':
setattr(self, key, value)
def delete(self):
self.status = 0
2回答
-
网络连接已断开
2021-05-18
复制这段提示到搜索引擎:
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
有很很多解决方案,同学可以尝试下
012021-05-18 -
aumujun
提问者
2021-05-17
(restful) mac@macdeMac-mini ~/Documents/restful pipenv graph
cymysql==0.9.1
email-validator==1.1.2
- dnspython [required: >=1.15.0, installed: 2.1.0]
- idna [required: >=2.0.0, installed: 2.6]
Flask-Cors==2.1.0
- Flask [required: >=0.9, installed: 1.0]
- click [required: >=5.1, installed: 7.1.2]
- itsdangerous [required: >=0.24, installed: 1.1.0]
- Jinja2 [required: >=2.10, installed: 2.11.3]
- MarkupSafe [required: >=0.23, installed: 1.1.1]
- Werkzeug [required: >=0.14, installed: 1.0.1]
- Six [required: Any, installed: 1.15.0]
Flask-HTTPAuth==2.7.0
- Flask [required: Any, installed: 1.0]
- click [required: >=5.1, installed: 7.1.2]
- itsdangerous [required: >=0.24, installed: 1.1.0]
- Jinja2 [required: >=2.10, installed: 2.11.3]
- MarkupSafe [required: >=0.23, installed: 1.1.1]
- Werkzeug [required: >=0.14, installed: 1.0.1]
Flask-SQLAlchemy==2.3.2
- Flask [required: >=0.10, installed: 1.0]
- click [required: >=5.1, installed: 7.1.2]
- itsdangerous [required: >=0.24, installed: 1.1.0]
- Jinja2 [required: >=2.10, installed: 2.11.3]
- MarkupSafe [required: >=0.23, installed: 1.1.1]
- Werkzeug [required: >=0.14, installed: 1.0.1]
- SQLAlchemy [required: >=0.8.0, installed: 1.4.15]
- greenlet [required: !=0.4.17, installed: 1.0.0]
- importlib-metadata [required: Any, installed: 4.0.1]
- typing-extensions [required: >=3.6.4, installed: 3.7.4.3]
- zipp [required: >=0.5, installed: 3.4.1]
Flask-WTF==0.14.2
- Flask [required: Any, installed: 1.0]
- click [required: >=5.1, installed: 7.1.2]
- itsdangerous [required: >=0.24, installed: 1.1.0]
- Jinja2 [required: >=2.10, installed: 2.11.3]
- MarkupSafe [required: >=0.23, installed: 1.1.1]
- Werkzeug [required: >=0.14, installed: 1.0.1]
- WTForms [required: Any, installed: 2.2.1]
requests==2.18.4
- certifi [required: >=2017.4.17, installed: 2020.12.5]
- chardet [required: >=3.0.2,<3.1.0, installed: 3.0.4]
- idna [required: >=2.5,<2.7, installed: 2.6]
- urllib3 [required: >=1.21.1,<1.23, installed: 1.22]
022022-06-27
相似问题