4. PyMySQL 익혀보기 > 4-3. PyMySQL 기본 문법_INSERT

PyMySQL 기본 문법_INSERT

본격적으로 python을 결합한 쿼리를 만들어 봅시다! 이번 교안에서는 몇 가지 예시만 제공하고 나머지 활용은 여러분의 몫으로 남겨 두려고 합니다.

INSERT문은 기본적으로 Workbench에서 사용했던 방법과 동일합니다. 다만, 삽입하고 싶은 데이터가 많을 때 PyMySQL을 사용하면 python의 반복문과 결합하여 보다 편리하게 사용할 수도 있습니다. 먼저 기본 INSERT문을 살펴보고, 반복문과 함께 쓰는 예시를 알아보도록 하겠습니다.

기본 INSERT

PyMySQL에서 데이터를 삽입하는 가장 기본적인 작업은 Worknech에서 했듯 하나씩 INSERT 해주는 방법입니다. 한 가지 차이가 있다면 PyMySQL을 임포트하고 DB와 연결하는 과정이 추가되었다는 점입니다. 7스텝! 기억나시죠?🤩

import pymysql

host_name = 'localhost'
host_port = 3306 
username = 'root'
password = ''
database_name = 'test'

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'
 )

sql="""
INSERT INTO COSADAMA (ID, NAME, INTEREST) VALUES("1234", '고다람', '러닝');
INSERT INTO COSADAMA (ID, NAME, INTEREST) VALUES("5678", '사마요', '독서');
"""

cursor.execute(sql)
    
db.commit()
db.close()

INSERT + for

그러나 삽입하고 싶은 내용이 많다면 위에처럼 하나씩 INSERT해주기 어렵겠죠! 이때 Python의 try~except문을 활용해 오류 값을 제외하고 DB에 값을 추가할 수 있습니다.(10~19번까지 id를 부여하고 이름과 취미는 모르는 상태라고 가정) 또한 마지막에 몇 번째 row인지 cursor.lastrowid를 통해 알아볼 수도 있습니다.

import pymysql
import pandas as pd

host_name = 'localhost'
host_port = 3306 
username = 'root'
password = ''
database_name = 'test'

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'
 )

try:
    cursor = db.cursor()
    for num in range(10,20):
        sql = "INSERT INTO COSADAMA (ID, NAME, INTEREST) VALUES("+ str(num) +", 'Unknown', 'Unknown')"
        print(sql)
        cursor.execute(sql)
    
    db.commit()
    print(cursor.lastrowid)

finally:
    db.close()
마지막으로 업데이트 된 날짜:
2022년 9월 24일