본문 바로가기

개발/Python

[Python] pymysql 모듈 사용법

반응형

파이썬에서 pymysql 모듈 사용하기

안녕하세요, 이번에는 파이썬에서 pymysql 모듈을 사용하는 방법에 대해 알아보겠습니다. pymysql 모듈은 파이썬에서 MySQL 데이터베이스와 연동할 수 있게 해주는 모듈입니다. 이 모듈을 사용하면 파이썬 코드에서 SQL 문을 실행하거나 데이터를 조회하거나 수정할 수 있습니다. 이 글에서는 pymysql 모듈의 기본적인 사용법과 예제를 살펴보겠습니다.

pymysql 모듈 설치하기

pymysql 모듈을 사용하기 위해서는 먼저 모듈을 설치해야 합니다. pip 명령어를 사용하면 쉽게 설치할 수 있습니다. 다음과 같이 입력해주세요.

pip install pymysql

pymysql 모듈 임포트하기

모듈을 설치했다면, 파이썬 코드에서 pymysql 모듈을 임포트해야 합니다. 다음과 같이 입력해주세요.

import pymysql

MySQL 데이터베이스 연결하기

pymysql 모듈을 임포트했다면, MySQL 데이터베이스와 연결할 수 있습니다. 연결하기 위해서는 다음과 같은 정보가 필요합니다.

  • 호스트 이름 또는 IP 주소
  • 포트 번호
  • 사용자 이름
  • 비밀번호
  • 데이터베이스 이름

이 정보를 가지고 있으면, 다음과 같이 pymysql.connect 함수를 사용하여 연결 객체를 생성할 수 있습니다.

conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234', db='test')

이때, conn 변수는 연결 객체를 가리키는 변수입니다. 연결 객체는 데이터베이스와의 통신을 담당하는 객체입니다. 연결 객체를 통해 SQL 문을 실행하거나 결과를 받을 수 있습니다.

SQL 문 실행하기

연결 객체를 생성했다면, SQL 문을 실행할 수 있습니다. SQL 문을 실행하기 위해서는 다음과 같은 순서를 따릅니다.

  1. 연결 객체로부터 커서 객체를 생성한다. 커서 객체는 SQL 문을 실행하고 결과를 받는 객체이다.
  2. 커서 객체의 execute 메서드를 사용하여 SQL 문을 실행한다. 이때, SQL 문에 파라미터가 있다면 튜플로 전달한다.
  3. SQL 문의 종류에 따라 다음과 같은 작업을 한다.
    • SELECT 문이라면, 커서 객체의 fetchone, fetchall, fetchmany 메서드를 사용하여 결과를 받는다. 이 메서드들은 튜플 또는 튜플의 리스트를 반환한다.
    • INSERT, UPDATE, DELETE 문이라면, 연결 객체의 commit 메서드를 사용하여 변경사항을 확정한다. 만약 변경사항을 취소하고 싶다면, 연결 객체의 rollback 메서드를 사용한다.
  4. 커서 객체와 연결 객체를 닫는다. 이때, close 메서드를 사용한다.

예제

이제 pymysql 모듈을 사용하여 간단한 예제를 해보겠습니다. 예제를 위해 다음과 같은 테이블을 생성하겠습니다.

CREATE TABLE student (
id INT PRIMARY KEY,
name VARCHAR(20),
age INT
);

이 테이블에는 학생의 아이디, 이름, 나이를 저장하는 컬럼이 있습니다. 이 테이블에 데이터를 삽입하고, 조회하고, 수정하고, 삭제하는 예제를 살펴보겠습니다.

데이터 삽입하기

먼저, 데이터를 삽입하는 예제입니다. 다음과 같이 코드를 작성해주세요.

import pymysql
# 데이터베이스 연결하기
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234', db='test')
# 커서 객체 생성하기
cursor = conn.cursor()
# SQL 문 실행하기
sql = "INSERT INTO student (id, name, age) VALUES (%s, %s, %s)"
cursor.execute(sql, (1, 'Alice', 20))
cursor.execute(sql, (2, 'Bob', 21))
cursor.execute(sql, (3, 'Charlie', 22))
# 변경사항 확정하기
conn.commit()
# 커서 객체와 연결 객체 닫기
cursor.close()
conn.close()

이 코드는 student 테이블에 3개의 데이터를 삽입하는 코드입니다. SQL 문에 파라미터가 있으므로, execute 메서드에 튜플로 전달하였습니다. 또한, 삽입 작업이 끝나면, commit 메서드를 사용하여 변경사항을 확정하였습니다.

데이터 조회하기

다음으로, 데이터를 조회하는 예제입니다. 다음과 같이 코드를 작성해주세요.

import pymysql
# 데이터베이스 연결하기
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234', db='test')
# 커서 객체 생성하기
cursor = conn.cursor()
# SQL 문 실행하기
sql = "SELECT * FROM student"
cursor.execute(sql)
# 결과 받기
result = cursor.fetchall()
print(result)
# 커서 객체와 연결 객체 닫기
cursor.close()
conn.close()

이 코드는 student 테이블의 모든 데이터를 조회하는 코드입니다. SQL 문에 파라미터가 없으므로, execute 메서드에 SQL 문만 전달하였습니다. 또한, 조회 작업이 끝나면, fetchall 메서드를 사용하여 결과를 받았습니다. 이 메서드는 튜플의 리스트를 반환합니다. 다음과 같이 출력됩니다.

((1, 'Alice', 20), (2, 'Bob', 21), (3, 'Charlie', 22))

데이터 수정하기

다음으로, 데이터를 수정하는 예제입니다. 다음과 같이 코드를 작성해주세요.

import pymysql
# 데이터베이스 연결하기
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234', db='test')
# 커서 객체 생성하기
cursor = conn.cursor()
# SQL 문 실행하기
sql = "UPDATE student SET age = %s WHERE id = %s"
cursor.execute(sql, (23, 1))
cursor.execute(sql, (24, 2))
cursor.execute(sql, (25, 3))
# 변경사항 확정하기
conn.commit()
# 커서 객체와 연결 객체 닫기
cursor.close()
conn.close()

이 코드는 student 테이블의 데이터를 수정하는 코드입니다. SQL 문에 파라미터가 있으므로, execute 메서드에 튜플로 전달하였습니다. 또한, 수정 작업이 끝나면, commit 메서드를 사용하여 변경사항을 확정하였습니다.

데이터 삭제하기

마지막으로, 데이터를 삭제하는 예제입니다. 다음과 같이 코드를 작성해주세요.

import pymysql
# 데이터베이스 연결하기
conn = pymysql.connect(host='localhost', port=3306, user='root', password='1234', db='test')
# 커서 객체 생성하기
cursor = conn.cursor()
# SQL 문 실행하기
sql = "DELETE FROM student WHERE id = %s"
cursor.execute(sql, (1,))
cursor.execute(sql, (2,))
cursor.execute(sql, (3,))
# 변경사항 확정하기
conn.commit()
# 커서 객체와 연결 객체 닫기
cursor.close()
conn.close()

이 코드는 student 테이블의 데이터를 삭제하는 코드입니다. SQL 문에 파라미터가 있으므로, execute 메서드에 튜플로 전달하였습니다. 또한, 삭제 작업이 끝나면, commit 메서드를 사용하여 변경사항을 확정하였습니다.

반응형