烧瓶,sqlalchemy KeyError:'SQLALCHEMY_TRACK_MODIFICATIONS'

时间:2018-08-02 02:11:38

标签: flask-sqlalchemy flask-restful

我做了一些烧瓶系统的api系统。

还可以使用flask-sqlalchemy与MySQL进行通信。

我的代码结构在这里。

app.py
  - api
    - __init.py
    - auth.py

  - db
    - __init__.py
    - db.py

[app.py]

from flask import Flask
from flask_restful import Resource, Api, reqparse
from api.auth import Register
from db.db import db, User

app = Flask(__name__)
api = Api(app)
db.create_all()

api.add_resource(Register, '/register')

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

[/ api / auth.py]

from flask_restful import Resource, reqparse
import jwt
from db.db import User, db


parser = reqparse.RequestParser()


class Register(Resource):
    def post(self):
        parser.add_argument('userid')
        parser.add_argument('userpw')
        args = parser.parse_args()

        if args['userid'] is not None and args['userpw'] is not None:
            user = User(
                userid=args['userid'],
                userpw=args['userpw']
            )
            db.session.add(user)
            db.session.commit()
            return {'status':'true', 'result':'register success'}
        else:
            return {'status':'false', 'result':'register fail'}

[/ db / db.py]

from flask_sqlalchemy import SQLAlchemy
from flask import Flask

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://id:pw@localhost/db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class User(db.Model):
    no = db.Column(db.Integer, primary_key=True)
    userid = db.Column(db.String(30), unique=True, nullable=False)
    userpw = db.Column(db.String(30), nullable=False)
    is_admin = db.Column(db.Boolean, default=False)

当我使用userid和userpw参数连接到/ register时,它将引发错误。

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2309, in __call__
    return self.wsgi_app(environ, start_response)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2295, in wsgi_app
    response = self.handle_exception(e)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_restful/__init__.py", line 273, in error_router
    return original_handler(e)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1741, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 34, in reraise
    raise value.with_traceback(tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 2292, in wsgi_app
    response = self.full_dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1815, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_restful/__init__.py", line 273, in error_router
    return original_handler(e)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1718, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/_compat.py", line 34, in reraise
    raise value.with_traceback(tb)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1813, in full_dispatch_request
    rv = self.dispatch_request()
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_restful/__init__.py", line 480, in wrapper
    resp = resource(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask/views.py", line88, in view
    return self.dispatch_request(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_restful/__init__.py", line 595, in dispatch_request
    resp = meth(*args, **kwargs)
  File "/Users/bscho/coding/flask/api/auth.py", line 24, in post
    db.session.add(user)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sqlalchemy/orm/scoping.py", line 153, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sqlalchemy/util/_collections.py", line 1001, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/sqlalchemy/orm/session.py", line 2950, in __call__
    return self.class_(**local_kw)
  File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/flask_sqlalchemy/__init__.py", line 142, in __init__
    track_modifications = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'

在我的db.py中,我已经定义了app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

但是它仍然会引发相同的错误。

我该如何解决这个问题?

谢谢。

0 个答案:

没有答案