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

MySQLdb dengan beberapa transaksi per koneksi

Saya pikir ada kesalahpahaman tentang apa yang dimaksud dengan transaksi di sini.

Contoh Anda membuka satu koneksi, lalu menjalankan satu transaksi di atasnya. Anda mengeksekusi beberapa pernyataan SQL dalam transaksi itu, tetapi Anda menutupnya sepenuhnya setelah melakukan. Tentu saja itu lebih dari cukup.

Menjalankan beberapa transaksi (bukan hanya pernyataan SQL), terlihat seperti ini:

conn = MySQLdb.connect(host="1.2.3.4", port=1234, user="root", passwd="x", db="test")

for j in range(10):
    try:
        for i in range(10):
            cur = conn.cursor()
            query = "DELETE FROM SomeTable WHERE ID = %d" % i
            cur.execute(query)
            cur.close()
        conn.commit()
    except Exception:
        conn.rollback()

conn.close()

Kode di atas melakukan 10 transaksi, masing-masing terdiri dari 10 pernyataan penghapusan individual.

Dan ya, Anda seharusnya dapat menggunakan kembali koneksi terbuka untuk itu tanpa masalah, selama Anda tidak membagikan koneksi tersebut antar utas.

Misalnya, SQLAlchemy menggunakan kembali koneksi dengan menyatukannya, membagikan koneksi terbuka sesuai kebutuhan ke aplikasi. Transaksi baru dan pernyataan baru dijalankan pada koneksi ini sepanjang masa pakai aplikasi, tanpa perlu ditutup hingga aplikasi dimatikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tampilkan catatan dari sekarang () hingga 7 hari berikutnya di mysql

  2. Kesalahan PHP:Level nesting fungsi maksimum '100' tercapai, batal

  3. Tidak dapat membuat server tertaut - server sql dan mysql

  4. Untuk garpu atau tidak?

  5. Wadah MySQL Docker tidak menyimpan data ke gambar baru