혼자 공부하는 SQL
✔️ 파이썬에서 SQL 실행
✔️ 파이썬에서 MySQL 연동
✔️ GUI 응용 프로그램 활용
✔️ 파이썬에서 SQL 실행
파이썬(Python)
무료로 강력한 기능 사용 가능
설치와 사용환경 구축이 용이
다양하고 강력한 외부 라이브러리 활용
PyMySQL 라이브러리
MySQL과 파이썬을 연결하여 파이썬에서 SQL 쿼리 작성과 실행이 가능합니다.
파이썬 환경 준비
파이썬 다운로드 페이지에서 각자 운영체제에 맞는 파일을 다운로드 받아서 설치
Download Python
The official home of the Python Programming Language
www.python.org
외부 라이브러리를 사용하기 위해서는 cmd(명령 프롬프트창)에서
pip install pymysql 실행하여 라이브러리를 설치합니다.
(저의 경우에는 주피터 노트북에서 수행하였습니다)
+
도서에서는 파이썬을 설치한 후 IDLE를 활용하는 방법을 알려주는데
저처럼 파이썬 프로그래밍을 할 수 있는 프로그램이 있다면 활용하면 좋을 것 같습니다.
✔️ 파이썬에서 MySQL 연동
MySQL과 연동하는 데이터베이스 연동
pymysql 라이브러리 설치 후 DB 연동 프로그램 작성 가능
간단한 명령어만으로 DB에서 원하는 결과 얻을 수 있습니다.
파이썬 활용하여 DB에 데이터 입력
MySQL 워크벤치에서 soloDB 데이터베이스 생성
-- soloDB 생성
drop database if exists soloDB;
create database soloDB;
파이썬 활용하여 DB에 데이터 입력하는 과정
① MySQL 연결
연결자 = pymysql.connect(연결옵션)
import pymysql
## 데이터베이스와 연동
conn = pymysql.connect(host='127.0.0.1', user='root', password='비밀번호',
db='soloDB', charset='utf8')
② 커서 생성
커서이름 = 연결자.cursor()
## 커서 생성
cur = conn.cursor()
③ 테이블 생성
커서이름.execute('create table 문장')
## 테이블 생성
cur.execute('create table userTable (id char(4), userName char(15),
email char(20), birthYear int )')
④ 데이터 입력
커서이름.execute('insert 문장')
## 테이블에 데이터 입력
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)')
⑤ 입력한 데이터 저장
연결자.commit()
## 입력 데이터 저장
conn.commit()
⑥ MySQL 연결 종료
연결자.close()
## 연결 DB 닫기
conn.close()
데이터 입력 프로그램
사용자가 반복하여 데이터를 입력하는 코드 작성
import pymysql
## 변수 선언
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", "" ## 입력받을 변수
sql="" ## insert into 문을 입력한 data값과 함께 문자열로 생성
conn = pymysql.connect(host='127.0.0.1', user='root', password='비밀번호', db='soloDB', charset='utf8')
cur = conn.cursor() ## 커서 생성
## 반복문 수행(데이터 입력은 반복적으로 이루어짐)
while (True) :
data1 = input("사용자 ID ==> ")
if data1 == "" :
break;
data2 = input("사용자 이름 ==> ")
data3 = input("사용자 이메일 ==> ")
data4 = input("사용자 출생연도 ==> ")
## insert into 문 반복 생성
sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"
cur.execute(sql)
conn.commit() ## 입력된 데이터 저장
conn.close() ## MySQL soloDB와의 연결 종료
데이터 조회 프로그램
사용자가 입력한 데이터가 재대로 저장되었는지 조회하는 코드 작성
import pymysql
## 변수 선언
con, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
row=None
conn = pymysql.connect(host='127.0.0.1', user='root', password='비밀번호', db='soloDB', charset='utf8')
cur = conn.cursor()
cur.execute("SELECT * FROM userTable") ## SELECT문 조회 결과 cur에 저장
print("사용자ID 사용자이름 이메일 출생연도")
print("----------------------------------------------------")
## 반복문 수행
while (True) :
row = cur.fetchone() ## 한 행씩 추출
if row== None : ## 조회 결과가 없으면 None값 반환하고 반복문 빠져나옴
break
data1 = row[0]
data3 = row[2]
data4 = row[3]
data2 = row[1]
print("%5s %15s %20s %d" % (data1, data2, data3, data4)) ## 출력 형식에 맞춰 출력됨
conn.close() ## MySQL soloDB와의 연결 종료
✔️ GUI 응용 프로그램 활용
GUI(Graphical User Interface)
파이썬에서 MAC에 출력되는 GUI 응용 프로그램 작성 가능
tkinter 라이브러리를 활용하면 이용할 수 있습니다.
(운영체제가 MAC이기 때문에 다르게 나올 수 있지만 윈도우와 크게 다른 부분은 없습니다.)
기본 MAC 구성
from tkinter import *
root = Tk()
## 화면 구성 및 처리 공간
root.mainloop()
제목을 지정하고 크기 설정
from tkinter import *
root = Tk()
root.title("GUI 연습")
root.geometry("600x400")
root.mainloop()
라벨(문자를 표현할 수 있는 위젯)
위젯(MAC에 나오는 버튼, 텍스트, 라디오 버튼, 이미지 등 통합 지칭)
pack()함수를 사용해야만 화면에 표현 가능합니다.
from tkinter import *
root = Tk()
root.geometry("400x200")
## 라벨 생성(text는 문자, font는 글꼴과 크기, fg는 글자색, bg는 배경색)
label1 = Label(root, text="SQL은")
label2 = Label(root, text="어렵지 않습니다.", font=("고딕체", 40), bg="green", fg="white")
## pack()함수 통해 화면에 표시됨
label1.pack()
label2.pack()
root.mainloop()
버튼(마우스로 클릭하면 지정한 작업 실행되는 위젯)
Button() 형식을 사용하며, command 옵션으로 사용자가 버튼을 누르는 경우
지정한 작업을 처리한다는 점이 위젯과 다르며 다른 부분은 동일합니다.
from tkinter import *
from tkinter import messagebox
def clickButton() :
messagebox.showinfo('버튼 클릭', '버튼을 눌렀습니다..')
root = Tk()
root.geometry("300x300")
button1 = Button(root, text="여기 클릭", fg="red", bg="yellow", command=clickButton)
button1.pack(expand = 1)
root.mainloop()
위젯의 정렬
pack()함수의 옵션 중 가로 정렬하는 방법 활용
side = LEFT / side = RIGHT
from tkinter import *
root = Tk()
button1 = Button(root, text="혼자")
button2 = Button(root, text="공부")
button3 = Button(root, text="SQL")
## LEFT, RIGHT, TOP, BOTTOM 정렯 방식 선택 가능
button1.pack(side=LEFT)
button2.pack(side=LEFT)
button3.pack(side=LEFT)
# button1.pack(side=RIGHT)
# button2.pack(side=RIGHT)
# button3.pack(side=RIGHT)
# button1.pack(side=TOP)
# button2.pack(side=TOP)
# button3.pack(side=TOP)
# button1.pack(side=BOTTOM)
# button2.pack(side=BOTTOM)
# button3.pack(side=BOTTOM)
root.mainloop()
위젯의 여백 추가
pack() 함수의 옵션 중 padx=픽셀값 또는 pady=픽셀값 방식 사용
위젯 사이의 여백이 생기는 것을 확인할 수 있습니다.
from tkinter import *
root = Tk()
button1 = Button(root, text="혼자")
button2 = Button(root, text="공부")
button3 = Button(root, text="SQL")
button1.pack(side=TOP, fill=X, padx=10, pady=10)
button2.pack(side=TOP, fill=X, padx=10, pady=10)
button3.pack(side=TOP, fill=X, padx=10, pady=10)
root.mainloop()
프레임(화면을 여러 구역으로 나눌때 활용)
엔트리(입력 상자를 표현)
리스트 박스(목록을 표현)
from tkinter import *
root = Tk()
root.geometry("200x250")
upFrame = Frame(root)
upFrame.pack()
downFrame = Frame(root)
downFrame.pack()
editBox = Entry(upFrame, width = 10, )
editBox.pack(padx = 20, pady = 20)
listbox = Listbox(downFrame, bg = 'black');
listbox.pack()
listbox.insert(END, "하나")
listbox.insert(END, "둘")
listbox.insert(END, "셋")
root.mainloop()
완전한 GUI 응용 프로그램
해당 프로그램을 사용하기 위한 코드는 길고
지금까지의 응용버전이라는 생각에 코드는 따로 첨부하지 않았습니다
위의 데이터를 입력한 후 조회 진행
+
파이썬 필수 문법
도서 뒤에 파이썬을 활용하기 위한 필수 문법 내용이 있으니 궁금하신 분들은
도서를 참고하여 필수 문법 공부하면 좋을 것 같습니다.
이상으로 혼자 공부하는 SQL 내용이 전부 마무리 되었습니다.
다음에는 후기 글로 찾아뵙도록 하겠습니다 😊
혹시나 공부를 원하시는 분은 해당 도서를 구매하셔서 공부하는 더 좋을 것 같습니다.
혼자 공부하는 SQL
아무런 사전 지식 없는 입문자가 ‘꼭 필요한 내용을 제대로’ 학습할 수 있도록 구성했다. ‘무엇을’, ‘어떻게’ 학습해야 할지조차 모르는 입문자의 막연한 마음을 살펴, 과외 선생님이 알
www.aladin.co.kr
21강부터 23강까지의 내용을 다루고 있으니 궁금하신 분은 유튜브를 참고하여 공부하면 좋을 것 같습니다.
'SQL > 혼자 공부하는 SQL' 카테고리의 다른 글
[혼공S] 혼공단 13기_혼공학습단 13기, 나만의 SQL 성장기 (1) | 2025.02.21 |
---|---|
[혼공S] 6주차_스토어드 프로시저, 스토어드 함수(커서)와 트리거 (0) | 2025.02.16 |
[혼공S] 5주차_인덱스(Index) 원리와 MySQL 워크벤치 실습 (0) | 2025.02.12 |
[혼공S] 4주차_제약조건을 활용한 테이블 및 가상 테이블(VIEW) 생성 및 활용 (0) | 2025.02.03 |
[혼공S] 3주차_MySQL 데이터 형식과 JOIN(조인), SQL 프로그래밍 활용 (0) | 2025.01.23 |