복붙노트

[PYTHON] Python MySQLdb : connection.close () VS. cursor.close ()

PYTHON

Python MySQLdb : connection.close () VS. cursor.close ()

MySQLdb를 사용하여 Python을 통해 MySQL-Server에 연결하는 경우. 이 같은 연결 및 커서를 만듭니다.

connection = MySQLdb.connect(...)
cursor = connection.cursor()
# process

MySQL 처리가 완료되면 연결을 닫아야합니다. 지금 나는 궁금해하고있다 : 일을함으로써 연결을 닫는 것으로 충분하다 :

connection.close()

또는 먼저 커서를 닫은 다음 연결을 닫아야합니까? 이렇게 :

cursor.close()
connection.close()

해결법

  1. ==============================

    1.더 적은 것을 생각하십시오. 더 많은 도구를 사용하십시오.

    더 적은 것을 생각하십시오. 더 많은 도구를 사용하십시오.

    from contextlib import closing
    with closing( connection.cursor() ) as cursor:
        ... use the cursor ...
    
    # cursor closed.  Guaranteed.
    
    connection.close()
    
  2. ==============================

    2.커서를 끝내 자마자 커서를 닫아도 더 이상 쓸모가 없으므로 아마도 최선의 방법 일 것입니다. 그러나 db 연결 후 닫는 것이 위험한 부분은 보지 못했습니다. 그러나 당신이 그것을 다음과 같이 설정할 수 있기 때문에 :

    커서를 끝내 자마자 커서를 닫아도 더 이상 쓸모가 없으므로 아마도 최선의 방법 일 것입니다. 그러나 db 연결 후 닫는 것이 위험한 부분은 보지 못했습니다. 그러나 당신이 그것을 다음과 같이 설정할 수 있기 때문에 :

    cursor = conn.cursor()
    

    실수로 다시 지정하고 DB 연결이 닫히면 오류가 발생하므로 이전에 닫는 것이 좋습니다. 따라서 닫힌 연결로 우발적 인 재 할당을 방지하려면 먼저 닫아야 할 수 있습니다.

    (일부는 가비지 콜렉터에 의해 수집되기 때문에 전혀 닫히지 않습니다 (참조 : 파이썬에서 sqlite로 커서를 닫아야합니까?))

    참고 문헌 : MySQLdb를 사용하여 커서를 닫아야하는 경우

    파이썬에서 sqlite를 사용하면 커서를 닫아야합니까?

  3. ==============================

    3.이 특정 상황에서 연결을 닫으면 충분합니다. 여러 개의 커서 등으로 작업하는 경우 적절한 자원 관리에 신경을 써야합니다.

    이 특정 상황에서 연결을 닫으면 충분합니다. 여러 개의 커서 등으로 작업하는 경우 적절한 자원 관리에 신경을 써야합니다.

  4. from https://stackoverflow.com/questions/5504340/python-mysqldb-connection-close-vs-cursor-close by cc-by-sa and MIT license