Flask e SQLAlchemy e o objeto MetaData
é a primeira vez que estou usando esse ambiente.
A parte do SQLAlchemy que estou disposta a usar é justamente aquela que me permite consultar o banco de dados usando objetos Table com autoload = True. Eu estou fazendo isso como minhas tabelas já existem no banco de dados (servidor mysql) e não foram criadas pela definição de modelos de balão.
Eu passei por toda a documentação e não consigo encontrar uma resposta. Aqui está algum código:
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()
Agora você poderia estar se perguntando por que eu uso essa variável global chamada metadata. Ok, mais um código:
@app.route('/test/<int:id>')
def test(test_result_id):
testTable = Table('test_table', metadata , autoload=True)
Como você pode ver, eu preciso que esse objeto seja global para acessá-lo de dentro de uma função.
Também estou declarando o mesmo testTable var em cada função que precisa dele. Tenho a sensação de que esta não é a abordagem correta. Eu não encontrei nenhum conselho de melhores práticas para um caso como o meu.
Obrigado a todos!