4. PyMySQL 익혀보기 > 4-2. PyMySQL설치와 연결

PyMySQL설치와 연결

PyMySQL은 아래의 6가지 패턴 순서대로 진행됩니다. 하나씩 실행해보면서 그 역할을 확인해봅시다.

  1. import PyMySQL (실행하기)
  2. connect (MySQL 연결하기)
  3. cursor 사용하기 (객체 가져오기)
  4. SQL구문 만들기
  5. execute (DB 서버에 SQL 구문 전송하는 것)
  6. commit (DB 최종 변경)
  7. DB 닫아주기

설치 및 기본 연결

먼저 anaconda prompt에서 pip install PyMySQL을 통해 PyMySQL을 설치합니다. 이후 Python notebook에서 import pymysql을 실행해주세요.

DB 만들기

DB와 connect를 해주기 이전에 미리 DB가 존재해야 합니다. Workbench에서 이미 DB를 생성했거나, 이전에 만든 DB를 사용한다면 해당 과정은 넘어가도 됩니다!

아래 코드는 앞서 언급한 7가지 스텝을 한꺼번에 사용한 것입니다. 각 스텝에 대한 세부적인 설명은 아래에서 차근차근 알아봅시다.

# 1. 실행하기
import pymysql

# 2. connect
conn = pymysql.connect(host='localhost', port=3306,  user='root', password='password', charset='utf8') 

# 3. curosr 사용하기
cursor = conn.cursor() 

# 4. sql 구문 (DB만들어주기) 만들기
sql = "CREATE DATABASE crawling" 

# 5. execute
cursor.execute(sql) 

# 6. commit (최종 변경)
conn.commit() 

# 7. DB 닫아주기 
conn.close()

MySQL DB 접속

pymysql.connect()를 통해 MySQL, MySQL의 DB에 접속합니다.

# 2. pymysql.connect() 메서드를 사용해 MySQL에 연결
db = pymysql.connect(host = '접속할 mysql server 주소', port = 3306, user='mysql ID',passwd = 'mysql passwd', db='접속할 DB', charset='utf8')

위와 같은 방법 외에도 아래와 같이 각 요소들을 미리 정의한 뒤 DB를 연결하는 방법도 있습니다. 여러가지 다양한 방법을 활용할 수 있으니 한 예시로 참고하면 됩니다.

import pymysql

host_name = 'host_name'
host_port = 3306
username = 'user_name'
password = 'your_password'
database_name = 'student_mgmt'

db = pymysql.connect(
     host=host_name,     # MySQL Server Address
     port=host_port,     # MySQL Server Port
     user=username,      # MySQL username
     passwd=password,    # password for MySQL username
     db=database_name,   # Database name
     charset='utf8'
 )
 
# DataBase에 대한 연결을 'db'로 정의해 주었기 때문에 그냥 db만 입력하면 접속됨.
db

cursor 사용하기

cursor를 사용하는 것은 connection 객체로부터 cursor 메서드를 호출하여 cursor 객체를 가져오는 것을 의미합니다. 즉, 마우스를 움직여 화면에 보이는 cursor로 클릭하는 동작과 동일한 역할을 수행합니다. 구체적으로 어떤 동작을 하는지는 cursor.execute(), cursor.commit(), cursor.close() 등 여러 명령어와 괄호 안에 들어갈 SQL 쿼리문에 달려 있습니다.

#3. cursor 객체(object) 가져오기
cursor = db.cursor

#4. sql 문법 문자열로 작성하기
sql = """
CREATE TABLE COSADAMA (
    ID INT NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(20) NOT NULL,
    INTEREST VARCHAR(20),
    PRIMARY KEY(ID)
     );
"""

#5. sql에 저장된 쿼리 최종 실행
cursor.execute(sql)

#5. 위의 3번 과정을 건너뛰고 간단하게 문자열을 직접 삽입하는 것도 가능함!
cursor.execute("SHOW TABLES")

commit 및 close

commit이란 변경한 내용을 확정해 MySQL DB에 반영한다는 것을 의미합니다. 또한 close는 연결해준 DB를 사용이 끝난 뒤에는 닫아주는 역할을 합니다.

#6. commit하기(확정 반영) 
db.commit()

#7. db연결 닫기
db.close()

정리! DB 한 번에 연결하기

스텝별로 하나씩 역할을 살펴보았습니다. 일반적으로 PyMySQL을 사용할 때는 아래와 같이 모든 스텝을 한번에 작성하여 사용하곤 합니다. 익숙하게 사용하기 위해서는 '7단계'꼭 기억해야겠죠?!

## 1. 
import pymysql

## 2. connect
db = pymysql.connect(host = 'localhost', port = 3306, user='root',passwd = 'mysql passwd', db='접속할 DB', charset='utf8')

## 3. cursor 사용하기
cursor = db.cursor

## 4. sql구문 만들기
sql = """
CREATE TABLE COSADAMA (
    ID INT NOT NULL AUTO_INCREMENT,
    NAME VARCHAR(20) NOT NULL,
    INTEREST VARCHAR(20),
    PRIMARY KEY(ID)
    );
"""

## 5. cursor 실행하기
cursor.execute(sql)

## 6.commit (DB 최종 변경)
db.commit()

## 7. DB 닫아주기
db.close()

이 코드 역시 예시일 뿐입니다. DB를 연결하고, TABLE을 만드는 등의 과정에서 조금씩 차이가 있을 수 있으며 본인이 가장 익숙한 방법을 선택하여 익히면 됩니다.

마지막으로 업데이트 된 날짜:
2022년 9월 24일