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

python MySQLDB truy vấn hết thời gian chờ

giải pháp dựa trên xoắn của @ nosklo thanh lịch và khả thi, nhưng nếu bạn muốn tránh sự phụ thuộc vào xoắn, nhiệm vụ vẫn có thể thực hiện được, ví dụ:

import multiprocessing

def query_with_timeout(dbc, timeout, query, *a, **k):
  conn1, conn2 = multiprocessing.Pipe(False)
  subproc = multiprocessing.Process(target=do_query,
                                    args=(dbc, query, conn2)+a, 
                                    kwargs=k)
  subproc.start()
  subproc.join(timeout)
  if conn1.poll():
    return conn1.recv()
  subproc.terminate()
  raise TimeoutError("Query %r ran for >%r" % (query, timeout))

def do_query(dbc, query, conn, *a, **k):
  cu = dbc.cursor()
  cu.execute(query, *a, **k)
  return cu.fetchall()


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trích dẫn đơn, Trích dẫn kép và Dấu ngoặc kép trong Truy vấn MySQL

  2. Cách khôi phục kết xuất MySQL từ máy chủ đến vùng chứa Docker

  3. Cách tạo và duy trì Cơ sở dữ liệu MySQL trong cPanel

  4. TẠO BẢNG NẾU KHÔNG TỒN TẠI không thành công với bảng đã tồn tại

  5. Sử dụng nhãn trong mệnh đề có trong sqlachemy