파이썬 객체를 MySQL 데이터베이스에 삽입하기
서버에 test라는 이름의 MySQL 데이터베이스가 존재하고, 그 안에 employee 테이블이 이미 생성되어 있다고 가정해 보겠습니다. 이 테이블은 fname(이름), lname(성), age(나이), gender(성별), salary(급여)의 다섯 개 필드로 구성됩니다.
이제 다음과 같이 정의된 하나의 레코드 데이터를 담고 있는 튜플(tuple) 객체를 MySQL 데이터베이스에 삽입한다고 가정합니다.
t1 = ('Steven', 'Assange', 21, 'M', 2001)1단계: PyMySQL 모듈 설치 및 연결 설정
파이썬 3와 MySQL 사이의 인터페이스를 구축하려면 먼저 PyMySQL 모듈을 설치해야 합니다. pip를 사용하면 간단히 설치할 수 있습니다.
pip install pymysql
모듈 설치 후 아래 코드로 데이터베이스 연결을 설정합니다.
import pymysql
# 데이터베이스 연결 열기
db = pymysql.connect("localhost", "root", "", "test")
# cursor() 메서드로 커서 객체 준비
cursor = db.cursor()
2단계: INSERT 쿼리 작성
다음 단계는 튜플에 담긴 데이터를 활용해 INSERT 쿼리를 구성하는 것입니다.
sql = "INSERT INTO employee VALUES('%s', '%s', %d, '%s', %d)" % t1참고로 실무 환경에서는 SQL 인젝션 공격을 방지하고 코드 안정성을 높이기 위해 매개변수화된 쿼리(parameterized query) 방식을 사용하는 것이 좋습니다.
sql = "INSERT INTO employee VALUES(%s, %s, %s, %s, %s)"
cursor.execute(sql, t1)
3단계: 쿼리 실행 및 변경 사항 저장
이제 커서 객체의 execute() 메서드를 사용해 쿼리를 실행합니다.
cursor.execute(sql)
INSERT 문 실행 후에는 반드시 commit() 메서드를 호출해야 변경 사항이 데이터베이스에 실제로 저장됩니다.
db.commit()
작업이 모두 끝나면 연결을 닫아 리소스를 해제하는 것이 바람직합니다.
db.close()
위 과정을 마친 뒤 employee 테이블의 내용을 확인해 보면, 새로운 레코드가 성공적으로 추가된 것을 확인할 수 있습니다.