Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách đóng kết nối sqlalchemy trong MySQL

Đây là cách viết mã đó một cách chính xác:

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()

Đó là, Engine là một nhà máy cho các kết nối cũng như một hồ bơi kết nối, không phải bản thân kết nối. Khi bạn nói conn.close() , kết nối được trả về nhóm kết nối trong Engine , không thực sự đóng cửa.

Nếu bạn muốn kết nối thực sự bị đóng, tức là không được gộp chung, hãy tắt tính năng gộp chung qua NullPool :

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

Với Engine ở trên cấu hình, mỗi lệnh gọi đến conn.close() sẽ đóng kết nối DBAPI cơ bản.

Nếu OTOH bạn thực sự muốn kết nối với khác nhau cơ sở dữ liệu trên mỗi cuộc gọi, tức là "localhost/test_database" được mã hóa cứng của bạn chỉ là một ví dụ và bạn thực sự có rất nhiều cơ sở dữ liệu khác nhau, thì cách tiếp cận bằng cách sử dụng dispose() Ổn; nó sẽ đóng mọi kết nối không được kiểm xuất khỏi nhóm.

Trong tất cả các trường hợp trên, điều quan trọng là Connection đối tượng được đóng qua close() . Nếu bạn đang sử dụng bất kỳ loại thực thi "không kết nối" nào, đó là engine.execute() hoặc statement.execute() , ResultProxy đối tượng được trả về từ lệnh gọi thực thi đó phải được đọc hoàn toàn, hoặc nếu không thì phải đóng một cách rõ ràng qua close() . Một Connection hoặc ResultProxy mà vẫn mở sẽ cấm NullPool hoặc dispose() cách tiếp cận từ việc đóng mọi kết nối cuối cùng.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để trích xuất một giá trị số từ một chuỗi trong truy vấn MySQL?

  2. tạo ngày từ phạm vi ngày

  3. Tìm giá trị thường xuyên nhất trong cột SQL

  4. Cách xóa các ký tự hàng đầu không mong muốn khỏi chuỗi trong MySQL

  5. Gọi đến một hàm thành viên thực thi () trên boolean trong