MySQL_mysqlclient/Cursor/DB에서 Python 삽입, 수정, 데이터 삭제

(mysqlclient)

  • Python에는 MySQL 서버와 통신할 수 있는 여러 유형의 Python용 데이터베이스 커넥터가 있지만 PyMySQL 및 mysqlclient가 가장 일반적으로 사용됩니다.
  • 사용법은 비슷하지만 mysqlclient가 더 빠르므로 권장(mySQL 사이트에서 권장)
    – 실제로는 PyMySQL(순수 Python으로 개발)보다 mysqlclient를 더 많이 사용
    – mysqlclient는 PyMySQL보다 3배 이상 빠르지만 관련 데이터가 많지 않고 Mac에서 사용하기 어려움
  • mysqlclient
    – Python에서 C언어로 개발된 C 라이브러리를 사용하기 위한 확장 모듈
    – 즉, mysqlclient는 Python이 MySQL DB와 상호 작용하기 위해 C 라이브러리를 사용할 수 있도록 하는 모듈이며, Python에서 MySQL을 처리하는 데 필요한 여러 모듈과 함수가 포함된 라이브러리이기도 합니다.
  • 설치하기 위해서
    – mysqlclient 설치 후 MySQLdb 모듈을 import 합니다.
    – MySQLdb 모듈의 connect() 함수를 호출하여 MySQL 서버에 연결하고 이것이 나타내는 개체를 db 변수에 할당합니다.
    – db 변수와 연결된 연결 개체를 사용하면 데이터베이스 쿼리를 실행하거나 데이터를 조작할 수 있습니다.
    – 또한 cursor() 메서드를 호출하여 데이터베이스와 상호 작용할 수 있는 Cursor 개체를 만들 수 있습니다.

(커서)

  • 커서 개체
    – 데이터베이스 연결에서 독립적으로 SQL 문을 실행할 수 있는 작업 환경을 제공하는 객체
    – 하나의 연결에 대한 커서는 한 번에 하나만 생성할 수 있으며 커서를 통해 SQL 문을 실행할 때 실행 결과를 튜플 단위로 반환한다.
  • 커서 개체 만들기
    – 현재 = db.cursor()
    -> db 변수로 반환된 연결 개체에 Cursor() 메서드를 사용하여 Cursor 개체를 만듭니다.
    -> 이 커서 객체를 생성한 후 execute() 메서드를 사용하여 SQL 쿼리를 실행하거나 fetchone() 및 fetchall()과 같은 메서드를 사용하여 쿼리 결과를 가져올 수 있습니다.
    예) cur = db.cursor()
    SQL=”선택하다 사용자 ID, 사용자 이름, HP, 이메일, 성별 에서 회원”
    cur.execute(sql)
  • SQL 문의 결과 가져오기
    – fetchall(): 모든 튜플을 한 번에 가져옵니다. 매우 큰 검색 결과에 대해 메모리 오버헤드(희소성)가 발생할 수 있습니다.
    – fetchone(): 한 번에 하나의 튜플을 가져옵니다. 메소드를 다시 호출하면 다음 데이터를 가져옵니다.
    예) fetchall()

    예) 페치원()

    예) fetchone()으로 모든 라인을 차례로 출력

    – MySQLdb.cursors.DictCursor : 커서 객체 타입 중 하나로 MySQL 데이터베이스에서 데이터 임포트 시 딕셔너리 타입으로 반환된다(각 컬럼명은 키로, 각 값은 값으로 사용). 어떤 열 이름으로도 쉽게 데이터에 액세스할 수 있습니다.
    예)
  • 커서 및 연결 닫기
    – 커서 닫기: cur.close()
    -> 커서가 사용 중인 리소스를 반환하고 메모리 누수를 방지합니다.
    – 연결 종료: db.close()
    -> MySQL 데이터베이스 연결을 종료하는 방법으로 데이터베이스 연결 객체 db에 연결된 MySQL 서버와의 연결을 끊는다.
    -> 데이터베이스 연결은 일반적으로 제한된 수의 동시 연결을 지원하므로 불필요한 연결을 유지하면 다른 클라이언트에 영향을 미칠 수 있습니다.
    -> 위의 이유로 데이터베이스 연결을 사용한 후에는 항상 close() 메서드를 호출하여 MySQL 서버와의 연결을 안전하게 닫고 관련 리소스를 반환하여 메모리 누수를 방지하십시오.

(DB에 데이터 삽입, 변경, 삭제)

  • 데이터 삽입
    – 실행할 SQL 문에 변수가 있는 경우 변수에 할당할 값을 cur.execute() 메서드의 두 번째 매개 변수로 지정해야 합니다.
    – 데이터베이스 연결을 통해 삽입, 업데이트, 삭제 등의 데이터 수정 작업을 수행한 후 변경 내용을 커밋하려면 db.commit() 메서드를 호출해야 합니다. (변경된 데이터는 db.commit() 호출 이후에만 데이터베이스에 반영됨)
    – 한 줄만 삽입

    – 여러 줄 삽입
  • 데이터 변경
    – SQL 업데이트 문을 작성하여 데이터 수정

    – 반환되는 값은 변경된 행의 개수이므로 사용 가능합니다.
  • 데이터 삭제
    – 데이터를 삭제하는 SQL 삭제 문 작성