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 ==>
- 사용할 변수를 지정
- 데이터 베이스를 연결하고 커서를 준비
- 데이터를 입력하도록 코딩, 단 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 |