Mysql
 sql >> Database >  >> RDS >> Mysql

impostare la sessione in un oggetto sessione SQLAlchemy

Utilizzare un evento sessione per eseguire un'istruzione SQL arbitraria su ogni nuova transazione. Puoi anche utilizzare gli eventi a livello di connessione, dipende dal tuo caso d'uso.

Ecco come lo farei a livello di sessione:

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')

Se non sei sicuro di quale sia il metodo che fa per te, provali, scrivi alcuni casi di test e scopri se funziona per te.

Potrebbe esserci un avvertimento (incerto):poiché la connessione non viene interrotta ma restituita al pool, l'impostazione potrebbe persistere. In questo caso potresti anche voler allegare qualcosa per ripristinare l'impostazione predefinita, ad es. sul after_flush evento. Non sono del tutto sicuro su questo, potresti voler sperimentare. Se ciò non è necessario, puoi anche usare after_begin evento, ma non esiste un vero before_close evento che lo avvolge, quindi potrebbe creare problemi.