это первый раз, когда я использую эту среду.
Та часть SQLAlchemy, которую я хочу использовать, — это только та, которая позволяет мне запрашивать базу данных, используя объекты таблицы с автозагрузкой = True. Я делаю это, поскольку мои таблицы уже существуют в БД (сервер mysql) и не были созданы путем определения моделей фляг.
Я просмотрел всю документацию и, похоже, не нашел ответа. Вот код:
app = Flask(__name__)
app.config.from_object(__name__)
metadata = None
def connect_db():
engine = create_engine(app.config['DATABASE_URI'])
global metadata
metadata = MetaData(bind=engine)
return engine.connect()
@app.before_request
def before_request():
g.db = connect_db()
@app.teardown_request
def teardown_request(exception):
g.db.close()
Теперь вам может быть интересно, почему я использую эту глобальную переменную с именем метаданные. Хорошо, еще код:
@app.route('/test/<int:id>')
def test(test_result_id):
testTable = Table('test_table', metadata , autoload=True)
Как видите, мне нужно, чтобы этот объект был глобальным, чтобы получить к нему доступ из функции.
Также я объявляю одну и ту же переменную testTable в каждой функции, которая в ней нуждается. У меня такое чувство, что это не правильный подход. Я не нашел ни одного совета по лучшей практике для такого случая, как мой.
Спасибо всем!