Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Tentang menyegarkan objek di sesi sqlalchemy

Sesi dirancang untuk bekerja seperti ini . Atribut objek di Sesi B AKAN mempertahankan apa yang dimilikinya saat pertama kali ditanyakan di Sesi B. Selain itu, SQLAlchemy tidak akan mencoba untuk secara otomatis menyegarkan objek di sesi lain saat objek tersebut berubah, saya juga tidak berpikir akan bijaksana untuk mencoba membuat sesuatu seperti ini.

Anda harus secara aktif memikirkan umur setiap sesi sebagai satu transaksi dalam database. Bagaimana dan kapan sesi perlu berurusan dengan fakta bahwa objek mereka mungkin basi bukanlah masalah teknis yang dapat diselesaikan dengan algoritma yang dibangun ke dalam SQLAlchemy (atau ekstensi apa pun untuk SQLAlchemy):ini adalah masalah "bisnis" yang solusinya Anda harus tentukan dan kodekan sendiri. Tanggapan "benar" mungkin mengatakan bahwa ini bukan masalah:logika yang terjadi dengan Sesi B bisa valid jika menggunakan data pada saat Sesi B dimulai. "Masalah" Anda mungkin sebenarnya bukan masalah. Dokumen sebenarnya memiliki seluruh bagian tentang kapan harus menggunakan sesi , tetapi memberikan respons yang cukup suram jika Anda mengharapkan solusi satu ukuran untuk semua...

Meskipun demikian, ada beberapa hal yang dapat Anda lakukan untuk mengubah cara kerja situasi:

Pertama, Anda dapat mengurangi berapa lama sesi Anda tetap terbuka. Sesi B menanyakan objek, kemudian Anda melakukan sesuatu dengan objek itu (dalam sesi yang sama) yang Anda inginkan agar atributnya diperbarui. Salah satu solusinya adalah melakukan operasi kedua ini dalam sesi terpisah.

Cara lainnya adalah dengan menggunakan metode kedaluwarsa/penyegaran, sebagai dokumen tampilkan ...

# immediately re-load attributes on obj1, obj2
session.refresh(obj1)
session.refresh(obj2)

# expire objects obj1, obj2, attributes will be reloaded
# on the next access:
session.expire(obj1)
session.expire(obj2)

Anda dapat menggunakan session.refresh() untuk segera mendapatkan versi objek yang terbaru, meskipun sesi sudah menanyakan objek sebelumnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mengembalikan dump MySQL dari Host ke wadah Docker

  2. Masalah MySQL saat membuat pengguna baru

  3. PDO Beberapa kueri:transaksi komit dan kembalikan

  4. Pilih hanya beberapa kolom dari tabel di LEFT JOIN

  5. Pilih dari satu meja di mana tidak di meja lain