Ini adalah kelemahan dalam Python DB-API:ini memulai transaksi untuk Anda. Seharusnya tidak melakukan itu; apakah dan kapan memulai transaksi harus terserah programmer. API inti tingkat rendah seperti ini seharusnya tidak mengasuh pengembang dan melakukan hal-hal seperti memulai transaksi di belakang kami. Kami sudah besar--kami dapat memulai transaksi sendiri, terima kasih.
Dengan psycopg2, Anda dapat menonaktifkan perilaku yang tidak menguntungkan ini dengan ekstensi API:jalankan connection.autocommit = True
. Sayangnya, tidak ada API standar untuk ini, jadi Anda harus bergantung pada ekstensi nonstandar untuk mengeluarkan perintah yang harus dijalankan di luar transaksi.
Tidak ada bahasa tanpa kutilnya, dan ini adalah salah satu dari Python. Saya juga pernah digigit oleh ini sebelumnya.