Это код модели, я тестировал этот код, он не содержит ошибок и может создавать таблицы, записи в БД
createdb.py
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:@localhost:3306/ai'
db = SQLAlchemy(app)
if __name__ == 'createdb':
db.reflect()
db.drop_all()
db = SQLAlchemy(app)
class Class(db.Model):
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
label = db.Column(db.String(255), unique=True, nullable=False)
def __init__(self, label):
self.label = label
def __repr__(self):
return '<Class %r>' % self.username
class Photo(db.Model):
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
path = db.Column(db.String(1024), nullable=False)
def __init__(self, path):
self.path = path
def __repr__(self):
return '<Photo %r>' % self.username
class PhotoClass(db.Model):
id = db.Column(db.Integer, primary_key=True, unique=True, autoincrement=True)
photoId = db.Column(db.Integer, db.ForeignKey('photo.id'), nullable=False)
classId = db.Column(db.Integer, db.ForeignKey('class.id'), nullable=False)
score = db.Column(db.Float, nullable=False)
def __init__(self, photoId, classId):
self.photoId = photoId
self.classId = classId
def __repr__(self):
return '<PhotoClass %r>' % self.username
if __name__ == 'createdb':
db.create_all()
db.session.add(Class('Plain'))
db.session.add(Class('Printed'))
db.session.commit()
Это код сервера
app.py
import createdb
app = Flask(__name__)
@app.route('/')
def index():
createdb.db.session.add(createdb.Class('aaa'))
createdb.db.session.commit()
return render_template('index.html')
if __name__ == '__main__':
app.run()
Если я импортирую на сервер, все равно не будет ошибки, когда я перейду на localhost: 5000, я получу эту ошибку
track_modifications = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'
Это полная ошибка
[2018-10-30 18:31:03,288] ERROR in app: Exception on / [GET]
Traceback (most recent call last):
File "C:\python\lib\site-packages\sqlalchemy\util\_collections.py", line 999, in __call__
return self.registry[key]
KeyError: 12344
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\python\lib\site-packages\flask\app.py", line 2292, in wsgi_app
response = self.full_dispatch_request()
File "C:\python\lib\site-packages\flask\app.py", line 1815, in full_dispatch_request
rv = self.handle_user_exception(e)
File "C:\python\lib\site-packages\flask\app.py", line 1718, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "C:\python\lib\site-packages\flask\_compat.py", line 35, in reraise
raise value
File "C:\python\lib\site-packages\flask\app.py", line 1813, in full_dispatch_request
rv = self.dispatch_request()
File "C:\python\lib\site-packages\flask\app.py", line 1799, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "E:\0\airbtn\yeetungaiserver\app.py", line 17, in index
createdb.db.session.add(createdb.Class('aaa'))
File "C:\python\lib\site-packages\sqlalchemy\orm\scoping.py", line 153, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "C:\python\lib\site-packages\sqlalchemy\util\_collections.py", line 1001, in __call__
return self.registry.setdefault(key, self.createfunc())
File "C:\python\lib\site-packages\sqlalchemy\orm\session.py", line 2950, in __call__
return self.class_(**local_kw)
File "C:\python\lib\site-packages\flask_sqlalchemy\__init__.py", line 142, in __init__
track_modifications = app.config['SQLALCHEMY_TRACK_MODIFICATIONS']
KeyError: 'SQLALCHEMY_TRACK_MODIFICATIONS'