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:example@sqldat.com/databasename',
isolation_level='READ UNCOMMITTED')
Lihat SET TRANSACTION dokumentasi
untuk detail tentang setiap tingkat isolasi.