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

Perbarui tabel yang digabungkan melalui SQLAlchemy ORM menggunakan session.query

Pada versi 0.7.4 sqlalchemy.sql.expression.update tidak memungkinkan Anda untuk merujuk ke beberapa tabel dalam klausa WHERE. Dengan ini, Anda dapat membuat dan menjalankan ekspresi seperti:

users.update().values(name='ed').where(
        users.c.name==select([addresses.c.email_address]).\
                    where(addresses.c.user_id==users.c.id).\
                    as_scalar()
        )

(contoh langsung dari link di atas)

Masalah yang dialami ValAyal sebenarnya karena Query.join() tidak didukung dengan Query.update() . Sayangnya, hingga 0.9.1 ini diam-diam menghasilkan pertanyaan seperti yang dibagikan ValAyal di atas. catatan log perubahan untuk 0.9.1 mencatat bahwa perilaku telah dimodifikasi untuk mengeluarkan peringatan:

Kami benar-benar mengalami ini di mana saya bekerja malam ini dan menemukan bahwa kode kami, pada kenyataannya, memancarkan peringatan berikut (yang mengatakan itu akan menjadi kesalahan dalam 1.0):

SAWarning: Can't call Query.update() or Query.delete() when join(), outerjoin(), select_from(), or from_self() has been called.  This will be an exception in 1.0
  self._validate_query_state()

Dalam kasus kami, kami memilih untuk mengonversi pembaruan menjadi pilihan dan pembaruan ke satu tabel.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. meningkatkan kinerja untuk klausa LIKE

  2. Apa cara terbaik untuk mengelola tanggal di PHP, MySQL, dll?

  3. Metode paling efisien untuk kedaluwarsa catatan setelah 10 menit dari pembuatan

  4. HTML - Ubah\Perbarui konten halaman tanpa menyegarkan\memuat ulang halaman

  5. Hitung perbedaan antara dua tanggal dalam jam dan menit