파이썬으로 데이터베이스와 연결하면 데이터를 입력, 수정, 조회하는 등 SQL의 활용도를 더 높일 수 있습니다. 즉, 간단한 명령어를 실행하는 것만으로 데이터베이스에 값을 입력하거나, 원하는 결과를 추출할 수 있게 됩니다.

파이썬과 pymysql 라이브러리를 설치한 후에 MySQL과 연동하는 데이터베이스 연동 프로그램을 작성하는 법에 대해 알아보겠습니다.

 

 


 

파이썬 프로그램을 작성하는 가장 큰 이유는 일반 사용자가 데이터베이스의 내용을 사용하고자 할 때 SQL까지 배우기 어렵기 때문입니다. 파이썬을 잘 이용한다면 일반 사용자는 SQL 대신 간단한 명령어를 입력하는 것만으로 데이터베이스에서 원하는 결과를 얻을 수 있습니다. SQL의 활용도가 더욱 높아지겠죠!

 

파이썬_응용프로그램

 

🐍🐬pymysql 라이브러리 설치하기

파이썬 자체에는 MySQL을 인식하는 기능이 없습니다. 파이썬 코드에서 MySQL을 활용하기 위해 외부 라이브러리인 pymysql을 설치해야합니다.

1. windows + R을 누른 후에 실행 창에서 cmd를 입력하고 [확인] 버튼을 클릭합니다.

 


2. 명령 프롬프트가 나타나면 다음 명령어를 실행해서 pymysql을 설치합니다. ‘Successfully installed pymysql-x.x.x’와 같은 메시지가 나오면 성공입니다. WARNING 메시지는 무시하세요.

 pip install pymysql

  • pip install은 외부 라이브러리를 설치하는 명령입니다. 지금은 pymysql 라이브러리를 설치했지만, 필요하다면 다른 라이브러리도 동일한 방식으로 설치할 수 있습니다.

install_pymysql

 

 

3. 이제부터는 파이썬에서 MySQL과 관련된 기능을 사용할 수 있습니다. 다음 명령을 입력해서 명령 프롬프트를 종료합니다.

 exit

 

 


🐍🐬파이썬과 MySQL 데이터베이스 연동하기

파이썬과 MySQL 데이터베이스를 연동해보겠습니다. 연동 프로그램이 완성되면 MySQL 워크벤치 없이도 MySQL에 접근하고 사용할 수 있습니다.

 

 

🐬연동 프로그램을 위한 쇼핑몰 생성

다음 그림은 일반적인 쇼핑몰의 회원이 저장된 정보를 단순화해서 가정한 것입니다. 이와 같은 데이터베이스를 구축하는 것을 연습해보겠습니다.

데이터베이스

 

먼저 MySQL 워크벤치를 실행해서 ‘혼공 쇼핑몰 DB(soloDB)’를 생성합니다.

  👉 손코딩)

 DROP DATABASE IF EXISTS soloDB;
 CREATE DATABASE soloDB;

 

soloDB를 생성한 후에는 더 이상 MySQL 워크벤치를 사용하지 않습니다. 워크벤치에서 [File] – [Exit] 메뉴를 클릭하여 프로그램을 종료합니다.

 

 

🐍파이썬에서 데이터 입력하기: 6단계

파이썬에서 데이터를 입력하기 위해서는 다음과 같은 단계를 거치게 됩니다. 단계가 많아 보이지만, 거의 동일하게 고정되어 사용되는 단계이므로 반복 학습을 통해 익숙해지면 좋습니다.

파이썬에서_데이터_입력하는_순서

위와 같은 순서대로  ‘혼공 쇼핑몰 DB’를 구축하고 사용하겠습니다. IDLE을 실행해서 대화형 모드로 진행합니다.

 

 

① MySQL를 사용하기 위해서는 먼저 관련 모듈인 pymysql을 임포트한 후 pymysql.connect()로 데이터베이스와 연동해야 합니다.  conn이라는 변수를 데이터베이스와 연결된 연결자로 사용했습니다. 연결을성공해도 아무런 메시지도 나오지 않습니다.

 pymysql.connect(host=서버IP주소, user=사용자, passoword=암호, db=데이터베이스, charset=문자세트)

 

  👉 손코딩)

 import pymysql
 conn = pymysql.connect(host=’127.0.0.1′, user=’root’, password=’0000′, db=’soloDB’, charset=‘utf8’)

 *utf8: 한글이 문제 없도록 utf8을 사용

pymysql

  • Note) conn은 연결자를 의미하는 connection의 약자입니다. 다른 이름으로 사용해도 상관없지만 대개는 conn 또는 con으로 많이 사용합니다.

 

 

커서(cursor)는 데이터베이스에 SQL 문을 실행하거나 실행된 결과를 돌려받는 통로로 생각하면 됩니다. ① 에서 연결한 연결자에 커서를 만들어야 합니다. cur라는 변수를 커서로 사용하겠습니다.

 👉 손코딩)

 cur = conn.cursor()

pymysql_cursor

 

 

③ 이제는 테이블을 만들 차례입니다. 테이블을 만드는 SQL 문을 커서이름.execute() 함수의 매개변수로 넘겨주면 SQL 문이 데이터베이스에 실행됩니다. 즉, 파이썬에서도 MySQL 워크벤치에서 사용한 것과 동일한 SQL 문을 사용하면 됩니다.

 👉 손코딩)

 cur.execute(“CREATE TABLE userTable (id char(4), userName char(15), email char(20), birthYear int)”)

pymysql_execute

  • Note) 결과의 번호는 0 또는 다른 번호가 나와도 상관 없습니다.

 

 

④ 데이터는 필요한 만큼 반복해서 입력합니다. 데이터 입력도 SQL 문을 사용해야 하므로 커서이름.execute() 함수를 사용합니다.

 👉 손코딩)

 cur.execute(“INSERT INTO userTable VALUES( ‘hong’ , ‘홍지윤’ , ‘hong@naver.com’ , 1996)”)
 cur.execute(“INSERT INTO userTable VALUES( ‘kim’ , ‘김태연’ , ‘kim@daum.net’, 2011)”)
 cur.execute(“INSERT INTO userTable VALUES( ‘star’ , ‘별사랑’ , ‘star@paran.com’ , 1990)”)
 cur.execute(“INSERT INTO userTable VALUES( ‘yang’ , ‘양지은’ , ‘yang@gmail.com’ , 1993)”)

cur_execute

  • Note) 결과의 번호는 1이 나옵니다. 1건이 입력된 것으로 보면 됩니다.

 

 

⑤ 앞에서 입력한 4건의 데이터는 아직 데이터베이스에 완전히 저장된 것은 아닙니다. 임시로 저장된 상태로, 이를 확실하게 저장하는 것을 커밋(commit)이라고 부릅니다.

 👉 손코딩)

 conn.commit()

  • Note) 테이블에 입력한 내용을 완전히 저장하는 것을 커밋(commit)이라고 생각하면 됩니다.

 

 

⑥ 데이터베이스를 모두 사용했다면 ① 에서 연결한 데이터베이스를 닫아야 합니다.

 👉 손코딩)

 conn.close()

conn_close

  • Note) 데이터베이스를 close()로 닫는 것은 MySQL 워크벤치를 종료하는 것과 비슷한 개념입니다.

 


 

지금까지 pymysql 라이브러리 설치 방법, 파이썬과 MySQL 데이터베이스를 연동하는 방법에 대해 알아보았습니다. 

혼자 공부하는 SQL데이터 입력 프로그램과 데이터 조회 프로그램을 만드는 방법 그리고 GUI 응용 프로그램을 만드는 법은 <혼자 공부하는 SQL> 고급편에서 확인하실 수 있습니다. MySQL 연동을 위한 파이썬 필수 문법 또한 정리되어 있어 데이터 분석에 관심이 있는 입문자에게 권장하는 책입니다.

 

MySQL 8.0 설치하는 방법
Database, DBMS, SQL의 개념

 

👀도서 자세히 보기

👨‍🏫우재남 저자 직강 무료 동영상 강의
👨‍🏫SQL 커뮤니티