본문 바로가기

혼자공부하는 SQL

8. SQL과 파이썬 연결-1, 2

0. 학습 목표

  • 파이썬을 설치하고 외부 라이브러리를 이해
  • 파이썬과 MySQL을 연동하는 프로그램을 작성
  • 윈도가 나오는 멋진 SQL 연동 프로그램을 만듬

0. 요약

  • 파이썬에서 제공하지 않는 기능을 사용하기 위해서는 별도의 외부 라이브러리를 설치
  • PyMySQL은 파이썬과 MySQL을 연결시켜주는 외부 라이브러리
  • 파이썬은 대화형 모드와 한 번에 실행하는 스크립트 모드가 있음
  • 데이터베이스 연동은 SQL을 파이썬과 연결하는 것
  • import pymysql 명령을 사용해서 SQL과 파이썬을 연동
  • pymysql,connect()로 연결자를 생성하고 커서를 통해 파이썬에서 MySQL로 SQL을 전송
  • 데이터를 변경한 경우 commit을 수행해야 최종 반영
  • 파이썬에서 SELECT 문으로 데이터를 조회한 후에는 fetchone()함수로 데이터를 한 행씩 가져옴

1. 파이썬 개발 환경 준비

※핵심 키워드:  파이썬, 외부 라이브러리, PyMySQL, IDLE, 대화형 모드, 스크립트 모드

파이썬에는 MySQL을 인식하는 기능은 없으므로 PyMySQL이라는 외부 라이브러리를 설치 및 이용해야 한다.


2. 파이썬과 MySQL의 연동

※핵심 키워드:  데이터베이스 연동, import pymysql, 연결자, 커서, 커밋, fetchone()

파이썬으로 데이터베이스와 연결하면 데이터를 입력, 수정, 조회하는 등 SQL의 활용도를 더 높일 수 있다.

2-1. 연동 프로그래밍 기본

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

soloDB를 생성한 후에는 MySQL 워크벤치를 사용하지 않기 때문에 닫아도 된다.

DROP DATABASE IF EXISTS soloDB;
CREATE DATABASE soloDB;

파이썬에서 데이터 입력

파이썬에서 데이터를 입력하기 위해서는 다음과 같은 단계를 거치게 된다.

  • MySQL 연결하기
    -양식
pymysql.connect(host=서버IP주소, user=사용자, password=암호, db=데이터베이스, carset=문자셋트)
import pymysql
conn = pymysql.connect(host='127.0.0.1',port=3307, user='root', password='0000', db='soloDB', charset='utf8')
  • 커서 생성하기
cur=conn.cursor()
  • 테이블 만들기
cur.execute("CREATE TABLE userTable(id char(4), userName char(15), email char(20), birthYear int)")
0
  • 데이터 입력하기
cur.execute("CREATE TABLE userTable(id char(4), userName char(15), email char(20), birthYear int)")
0
cur.execute("INSERT INTO userTable VALUES('hong', '홍지윤', 'hong@naver.com', 1996)")
1
cur.execute("INSERT INTO userTable VALUES('kim', '김태연', 'kim@naver.com', 2011)")
1
cur.execute("INSERT INTO userTable VALUES('star', '별사랑', 'star@naver.com', 1990)")
1
cur.execute("INSERT INTO userTable VALUES('yang', '양지은', 'yang@naver.com', 1993)")
  • 입력한 데이터 저장하기
conn.commit()
  • MySQL 연결 종료하기
conn.close()
  • MySQL 워크벤치에서 확인하기
USE solodb;
SELECT * FROM userTable;

# id, userName, email, birthYear
'hong', '홍지윤', 'hong@naver.com', '1996'
'kim', '김태연', 'kim@naver.com', '2011'
'star', '별사랑', 'star@naver.com', '1990'
'yang', '양지은', 'yang@naver.com', '1993'

2-2. 연동 프로그래밍 활용

완전한 데이터 입력 프로그램의 완성

사용자가 반복해서 데이터를 입력하는 코드를 작성하자. userTable에 입력받은 데이터를 넣고 아무런 값이 없으면 종료하는 것으로 만든다.

import pymysql

#전역 변수 설정
########## 1 ########## 
conn, cur = None, None
uid, uname, uemail, ubirth = "", "", "", ""
sql = ""
########## 1 ##########

#메인 코드

########## 2 ##########
conn = pymysql.connect(host='127.0.0.1', port=3307, user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
########## 2 ##########


########## 3 ##########
while (True) :
    uid = input("사용자 ID ==> ")
    if uid == "" :
        break;
    uname = input("사용자 이름 ==> ")
    uemail = input("사용자 이메일 ==> ")
    ubirth = input("사용자 출생연도 ==> ")
    sql = "INSERT INTO userTable VALUES('" + uid + "', '" + uname + "', '" + uemail + "', " + ubirth + ")"
    cur.execute(sql)
########## 3 ##########
conn.commit()
conn.close()
================ RESTART: D:/21y study/3 MySQL/6주차/userTable.py ================
사용자 ID ==> su
사용자 이름 ==> 수지
사용자 이메일 ==> sugi@hanbit.com
사용자 출생연도 ==> 1994
사용자 ID ==>
  1. 사용할 변수를 지정
  2. 데이터 베이스를 연결하고 커서를 준비
  3. 데이터를 입력하도록 코딩, 단 ubirth의 경우 정수이므로 작은 따옴표로 묶지 않음

MySQL의 데이터 조회를 위한 파이썬 코딩 순서

이번에는 파이썬으로 데이터를 조회해 보기 위한 순서를 알아 보자.

fetchone()은 함수로 한 행씩 접근한 후 출력 한다. 


완전한 데이터 조회 프로그램의 완성

이번에는 파이썬으로 데이터를 조회해 보기 위해 코드를 작성하자.

import pymysql

#전역 변수 설정
########## 1 ########## 
conn, cur = None, None
uid, uname, uemail, ubirth = "", "", "", ""
row = None
########## 1 ##########

#메인 코드

########## 2 ##########
conn = pymysql.connect(host='127.0.0.1', port=3307, user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()
########## 2 ##########

cur.execute("SELECT * FROM userTable")

print("사용자 ID           사용자 이름          이메일      출생연도")
print("-------------------------------------------------------------")


########## 3 ##########
while (True) :
    row = cur.fetchone()
    if row == None :
        break
    uid = row[0]
    uname = row[1]
    uemail = row[2]
    ubirth = row[3]
    print("%4s           %15s          %20s      %d" % (uid, uname, uemail, ubirth))
########## 3 ##########
conn.close()
============= RESTART: D:/21y study/3 MySQL/6주차/userTable_select.py ============
사용자 ID           사용자 이름          이메일      출생연도
-------------------------------------------------------------
 hong                       홍지윤                hong@naver.com      1996
  kim                       김태연                 kim@naver.com      2011
 star                       별사랑                star@naver.com      1990
 yang                       양지은                yang@naver.com      1993
   su                        수지               sugi@hanbit.com      1994

3번 항목에서 %s는 문자열을 의미한다.

'혼자공부하는 SQL' 카테고리의 다른 글

7. 스토어드 프로시저-3  (0) 2022.02.23
7. 스토어드 프로시저-2  (0) 2022.02.22
7. 스토어드 프로시저-1  (0) 2022.02.16
6. 인덱스-3  (0) 2022.02.14
6. 인덱스-2  (0) 2022.02.10