У меня есть база данных SQLite для управления входами пользователей вместе с существующей базой данных MySQL. Я добавил базу данных MySQL в конфигурацию Flask-SQLAlchemy SQLALCHEMY_BINDS
. Когда я пытаюсь отразить таблицы, я получаю следующую ошибку:Отражение таблиц с Flask-SQLAlchemy повышает RuntimeError: приложение не зарегистрировано
RuntimeError: application not registered on db instance and no application bound to current context
Как правильно отразить таблицы?
__init__.py
:
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
config[config_name].init_app(app)
db.init_app(app)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
manage.py
:
from myapp import create_app
from flask.ext.migrate import Migrate, MigrateCommand
app = create_app(os.getenv('FLASK_CONFIG') or 'default')
manager = Manager(app)
migrate = Migrate(app, db)
manager.add_command('db', MigrateCommand)
if __name__ == '__main__':
manager.run()
models.py
:
from . import db, login_manager
db.Model.metadata.reflect(db.engine)
class Calls(db.Model):
__table__ = db.Model.metadata.tables['Calls2']
__bind_key__ = 'calls'
def __repr__(self):
return self.test1
Traceback (most recent call last):
File "./manage.py", line 6, in <module>
from app.models import User, Role, Permission
File "/home/ilias/Desktop/client-reporting/app/models.py", line 9, in <module>
db.Model.metadata.reflect(db.engine)
File "/home/ilias/Desktop/client-reporting/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 780, in engine
return self.get_engine(self.get_app())
File "/home/ilias/Desktop/client-reporting/local/lib/python2.7/site-packages/flask_sqlalchemy/__init__.py", line 809, in get_app
raise RuntimeError('application not registered on db '
RuntimeError: application not registered on db instance and no application bound to current context
Боюсь, что у меня что-то не хватает. Он не работает даже с 'db.reflect (app = app)'. Обратите внимание, что я использую Flask-Migrate и Alembic. – Galil
Хотя я добавил 'db.reflect (app = app)' Я получаю ту же ошибку, что и раньше. Что еще вы думаете, что я мог бы добавить? – Galil
Я отправил всю трассу. Благодаря! – Galil