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

Cara menutup koneksi sqlalchemy di MySQL

Berikut cara menulis kode tersebut dengan benar:

db = create_engine('mysql://[email protected]/test_database')
for i in range(1,2000):
    conn = db.connect()
    #some simple data operations
    conn.close()
db.dispose()

Yaitu, Engine adalah pabrik untuk koneksi serta kolam koneksi, bukan koneksi itu sendiri. Saat Anda mengucapkan conn.close() , koneksi dikembalikan ke kumpulan koneksi di dalam Engine , sebenarnya tidak ditutup.

Jika Anda ingin koneksi benar-benar ditutup, yaitu, tidak digabungkan, nonaktifkan penggabungan melalui NullPool :

from sqlalchemy.pool import NullPool
db = create_engine('mysql://[email protected]/test_database', poolclass=NullPool)

Dengan Engine di atas konfigurasi, setiap panggilan ke conn.close() akan menutup koneksi DBAPI yang mendasarinya.

Jika OTOH Anda benar-benar ingin terhubung ke berbeda database pada setiap panggilan, yaitu "localhost/test_database" hardcode Anda hanyalah sebuah contoh dan Anda sebenarnya memiliki banyak database yang berbeda, maka pendekatannya menggunakan dispose() baik-baik saja; itu akan menutup setiap koneksi yang tidak diperiksa dari kumpulan.

Dalam semua kasus di atas, yang penting adalah Connection objek ditutup melalui close() . Jika Anda menggunakan jenis eksekusi "tanpa koneksi", yaitu engine.execute() atau statement.execute() , ResultProxy objek yang dikembalikan dari panggilan eksekusi itu harus dibaca sepenuhnya, atau secara eksplisit ditutup melalui close() . Sebuah Connection atau ResultProxy yang masih terbuka akan melarang NullPool atau dispose() mendekat dari menutup setiap koneksi terakhir.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL berkata:Dokumentasi #1045 - Akses ditolak untuk pengguna 'root'@'localhost' (menggunakan kata sandi:TIDAK)

  2. Pengantar Failover untuk Replikasi MySQL - Blog 101

  3. Permintaan UNION dengan pola rekaman aktif codeigniter

  4. SQLAlchemy PADA PEMBARUAN KUNCI DUPLICATE

  5. Bagaimana cara mengubah susunan database, tabel, kolom?