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

sæt session i et SQLAlchemy-sessionsobjekt

Brug en sessionsbegivenhed at udføre en vilkårlig SQL-sætning på hver ny transaktion. Du kan også bruge hændelser på forbindelsesniveauet, det afhænger af din use case.

Sådan ville jeg gøre det på sessionsniveau:

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

Hvis du er usikker på, hvilken vej der virker for dig, så prøv dem bare, skriv nogle testcases og find ud af, om det virker for dig.

Der kan være en advarsel (usikker):Da forbindelsen ikke afbrydes, men returneres til poolen, kan indstillingen fortsætte. I dette tilfælde vil du måske også vedhæfte noget for at gendanne standarden, f.eks. på after_flush begivenhed. Jeg er ikke helt sikker på dette, du vil måske prøve. Hvis dette er unødvendigt, kan du også bruge after_begin begivenhed, men der er ingen reel before_close begivenhed, der ombryder det, så det kan skabe problemer.



  1. Sådan finder og maskerer du PII i Elasticsearch

  2. MySQL Database Service – Nye HeatWave-innovationer

  3. Hvordan kan jeg flette to MySQL-tabeller?

  4. Sådan fungerer Cot() i PostgreSQL