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

SQL Alchemy Relationship loader meninggalkan kunci di atas meja?

Anda harus memulai transaksi baru sebelum .drop_all() panggilan; MySQL melihat Anda membaca dari tabel dalam transaksi ini, dan mengunci tabel agar tidak dijatuhkan:

session.commit()
Base.metadata.drop_all()

Melakukan transaksi secara implisit memulai transaksi baru.

MySQL membuat jaminan tentang isolasi transaksi; transaksi Anda akan membaca data yang konsisten dan tidak akan melihat perubahan yang dilakukan oleh transaksi lain sampai Anda memulai transaksi baru. Sebuah DROP TABLE pernyataan tersebut membuat MySQL tidak mungkin untuk menjaga jaminan ini sehingga tabel dikunci.

Atau, Anda dapat mengubah tingkat isolasi transaksi, memberi tahu MySQL bahwa Anda tidak peduli dengan jaminan isolasi. Karena koneksi sesi dikumpulkan, ini hanya dapat dilakukan untuk semua koneksi atau tidak sama sekali; gunakan isolation_level argumen ke create_engine() :

engine = create_engine(
    'mysql://username:[email protected]/databasename',
    isolation_level='READ UNCOMMITTED')

Lihat SET TRANSACTION dokumentasi untuk detail tentang setiap tingkat isolasi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Praktik penyatuan koneksi JDBC MySql untuk menghindari kumpulan koneksi yang habis

  2. Gunakan sphinx vs MySQL tanpa permintaan pencarian teks

  3. Cara memuat data ke tabel mysql tetapi mengabaikan baris kosong

  4. MySQL berbeda dihitung jika kondisinya unik

  5. cara keluar dari pembatas dari konten kolom saat mengekspor csv