sql >> Database >  >> RDS >> Mysql

sessie instellen in een SQLAlchemy-sessieobject

Gebruik een sessie-evenement om bij elke nieuwe transactie een willekeurige SQL-instructie uit te voeren. U kunt ook gebeurtenissen op verbindingsniveau gebruiken, dit hangt af van uw gebruikssituatie.

Hier is hoe ik het zou doen op sessieniveau:

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

Als je niet zeker weet welke manier voor jou werkt, probeer ze dan gewoon, schrijf wat testcases en ontdek of dat voor jou werkt.

Er kan een waarschuwing zijn (onzeker):aangezien de verbinding niet wordt verbroken maar wordt teruggestuurd naar de pool, kan de instelling blijven bestaan. In dit geval wil je misschien ook iets toevoegen om de standaard te herstellen, b.v. op de after_flush evenement. Ik ben hier niet helemaal zeker van, misschien wil je experimenteren. Als dit niet nodig is, kunt u ook de after_begin . gebruiken evenement, maar er is geen echte before_close gebeurtenis die het omhult, dus het kan problemen veroorzaken.



  1. Een tabel maken met een rekenkundige overloopfout

  2. Een PHP-array opmaken voor een SQL IN-clausule

  3. PHP mySQL - Kunt u een bijbehorende array retourneren met een nummerindex?

  4. Voortgang weergeven tijdens doInbackground