sql >> Base de Datos >  >> RDS >> Mysql

establecer sesión en un objeto de sesión SQLAlchemy

Use un evento de sesión para ejecutar una instrucción SQL arbitraria en cada nueva transacción. También puede usar eventos en el nivel de conexión, depende de su caso de uso.

Así es como lo haría en el nivel de sesión:

Session = sessionmaker()
@event.listens_for(Session, 'before_flush')
def set_max_heap_table_size(session, transaction, connection):
    session.execute('SET max_heap_table_size = 1024 * 1024 * 64')

Si no está seguro de cuál funciona para usted, pruébelo, escriba algunos casos de prueba y descubra si funciona para usted.

Puede haber una advertencia (no estoy seguro):dado que la conexión no se interrumpe sino que se devuelve al grupo, la configuración podría persistir. En este caso, es posible que también desee adjuntar algo para restaurar el valor predeterminado, p. en el after_flush evento. No estoy completamente seguro de esto, es posible que desee experimentar. Si esto no es necesario, también podría usar after_begin evento, pero no hay un before_close real evento que lo envuelve, por lo que podría crear problemas.