[Python/SQL] PyMYSQL - 데이터 삽입 (INSERT)

2021. 8. 29. 20:0003. Resources/Python

728x90
반응형

데이터베이스와 테이블을 만들었으니, 이제 만들어진 테이블에 데이터를 넣어볼 차례다.

데이터를 테이블에 넣으려면, 데이터를 테이블에 넣는 SQL 커맨드(INSERT INTO "TABLE NAME" (COLUMNS) VALUES (DATA))를 mysql로 보내면 된다!

전체 코드는 아래와 같다.

import pymysql

conn = pymysql.connect(host='localhost', user='root',
                password='password', db='developer', charset='utf8')

cursor = conn.cursor()

sql = "INSERT INTO user (email, department) VALUES (%s, %s)"

cursor.execute(sql, ("hr_lim@sunandbean.com","HR"))
cursor.execute(sql, ("hr_choi@sunandbean.com","HR"))
cursor.execute(sql, ("dev_kim@sunandbean.com","DEV"))
cursor.execute(sql, ("dev_park@sunandbean.com","DEV"))
cursor.execute(sql, ("ops_song@sunandbean.com","OPS"))
cursor.execute(sql, ("ops_bae@sunandbean.com","OPS"))
cursor.execute(sql, ("ai_cho@sunandbean.com","AI"))
cursor.execute(sql, ("ai_chang@sunandbean.com","AI"))

conn.commit()
conn.close()

cursor.execute(sql, args) 를 그냥 여러번 썼는데, argument를 튜플 리스트로 만들어서 반복문으로 돌려도 된다.

이번엔 코드 흐름페이지에서 얘기했던 것처럼 테이블의 데이터를 조작하는 커맨드인 INSERT 를 사용했기 때문에, 변경 사항을 저장해줘야해서 conn.commit() 을 실행시키고 나서 conn.close() 를 실행시킨다.

위의 스크립트를 실행한 결과는 아래와 같다.

원하는 위치에 값들이 잘 들어갔다!

 

만약 conn.commit()을 안하고 conn.close()를 한다면 어떻게 될까? 아래 코드를 실행시켜봤다. 아래와 같은 결과를 얻을 수 있다.

import pymysql

conn = pymysql.connect(host='localhost', user='root',
                password='password', db='developer', charset='utf8')

cursor = conn.cursor()

sql = "INSERT INTO user (email, department) VALUES (%s, %s)"

# cursor.execute(sql, ("hr_lim@sunandbean.com","HR"))
# cursor.execute(sql, ("hr_choi@sunandbean.com","HR"))
# cursor.execute(sql, ("dev_kim@sunandbean.com","DEV"))
# cursor.execute(sql, ("dev_park@sunandbean.com","DEV"))
# cursor.execute(sql, ("ops_song@sunandbean.com","OPS"))
# cursor.execute(sql, ("ops_bae@sunandbean.com","OPS"))
# cursor.execute(sql, ("ai_cho@sunandbean.com","AI"))
# cursor.execute(sql, ("ai_chang@sunandbean.com","AI"))
cursor.execute(sql, ("ai_kim@sunandbean.com","AI"))

# conn.commit()
conn.close()

위의 코드를 실행시켜도, 테이블에는 아무런 변화가 없는 것을 볼 수 있다.

 

RDBMS를 구축하는 경우에, JOIN 커맨드도 하나의 조건이니 SQL 커맨드 부분을 변경해서 사용하면 된다.

반응형