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.