Mysql
 sql >> Baza danych >  >> RDS >> Mysql

ustawić sesję w obiekcie sesji SQLAlchemy

Użyj zdarzenia sesji do wykonania dowolnej instrukcji SQL przy każdej nowej transakcji. Możesz także używać zdarzeń na poziomie połączenia, zależy to od przypadku użycia.

Oto jak zrobiłbym to na poziomie sesji:

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

Jeśli nie masz pewności, który sposób działa dla Ciebie, po prostu wypróbuj je, napisz kilka przypadków testowych i dowiedz się, czy to działa dla Ciebie.

Może być jedno zastrzeżenie (niepewne):ponieważ połączenie nie jest zrywane, ale zwracane do puli, ustawienie może się utrzymywać. W takim przypadku możesz również chcieć dołączyć coś, aby przywrócić domyślne, np. na after_flush wydarzenie. Nie jestem do końca pewien, możesz poeksperymentować. Jeśli nie jest to konieczne, możesz również użyć after_begin zdarzenie, ale nie ma prawdziwego before_close wydarzenie, które go otacza, więc może powodować problemy.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zmienić domyślne sortowanie tabeli?

  2. Czy mysql ma odpowiednik funkcji analitycznych Oracle?

  3. Usuwanie duplikatów z wyniku wielokrotnego łączenia tabel z różnymi kolumnami w MySQL

  4. Jak działa funkcja UNHEX() w MySQL

  5. Narzędzie do importowania plików CSV do bazy danych MySQL?