MySQL 요약 노트-7

soyeong·2022년 10월 13일
0

MySQL

목록 보기
7/7
post-thumbnail

MySQL 요약 노트 (2022년 1월 ~ 2022년 3월까지 공부했던 내용 정리)
혼자 공부하는 SQL책과 한빛미디어에서 제공하는 유튜브 강의로 공부함

📌 8강 SQL과 파이썬(Python) 연결

✔️ 08-1 파이썬 개발 환경

  • 파이썬(Python)
    • 장점
      • 무료로 강력한 기능을 사용할 수 있음
      • 설치와 사용 환경 구축이 쉬움
      • 다양하고 강력한 외부 라이브러리들이 많음
    • PyMySQL 외부 라이브러리 설치: 파이썬을 MySQL과 연결해주는 대표적인 외부 라이브러리
  • 파이썬 설치
    • 1) 파이썬 다운로드: https://www.python.org/ 에서 Downloads 클릭 후 Download Python 3.x.x 버튼 클릭
    • 2) 파이썬 설치하기: 다운로드한 python-3.x.x-amd64.exe 파일을 더블 클릭하고 설치
      • 설치시 Add Python 3.x to PATH 체크 후 Install Now 버튼 클릭
      • 설치 후 Close 버튼 클릭
    • 3) 외부 라이브러리 설치하기
      • cmd 창에서 pip install pymysql 입력
      • 설치 후 성공 메시지 Successfully installed pymysql-x.x.x 확인
      • cmd 창에서 exit 입력
    • 4) 파이썬 사용법
      • Python의 IDLE 환경(한 줄 실행, 여러 줄 실행)
        • 윈도우의 시작 버튼 클릭 후 Python 3.x 파일에 IDLE 클릭
      • 한 줄 실행(대화형 모드)
        • 한 줄 실행: 한 줄 입력하고 Enter 키를 누르면 바로 실행
        • 프로그램 종료: File-Exit 메뉴 클릭
      • 여러 줄 실행(스크립트 모드)
        • File-New File 메뉴 클릭 후 새 창에서 코딩
        • File-Save 메뉴 클릭 후 파일 이름 지정 후 저장
        • 여러 줄 실행: 파일이름.py창에서 Run-Run Module 메뉴 선택 또는 F5키 누르기
        • 프로그램 종료: File-Exit 메뉴 클릭

✔️ 08-2 파이썬과 MySQL의 연동

  • 연동 프로그래밍: MySQL에서 데이터 입력
    • 1) MySQL 워크벤치 실행 후 데이터베이스 구축
    DROP DATABASE IF EXISTS 데이터베이스_이름;
    CREATE DATABASE 데이터베이스_이름;
    • 2) MySQL의 데이터 입력을 위한 파이썬 코딩
      1. MySQL 연결하기: 연결자=pymysql.connect(연결 옵션)
      • MySQL를 사용하기 위해 import pymysql 후 pymysql.connect()로 데이터베이스와 연동
      • conn 변수는 데이터베이스와 연결된 연결자
      import pymysql
      conn = pymysql.connect(host=서버IP주소, user=사용자, password=암호, db=데이터베이스, charset=문자세트)
      2. 커서 생성하기: 커서이름=연결자.cursor()
      • 커서는 데이터베이스에 SQL 문을 실행하거나 실행된 결과를 돌려받는 통로
      cur = conn.cursor()
      3. 테이블 만들기: 커서이름.execute("CREATE TABLE 문장")
      • 테이블을 만드는 SQL 문을 커서이름.execute() 함수의 매개변수로 넘겨주면 SQL 문이 데이터베이스에 실행됨
      cur.execute("CREATE TABLE 테이블_이름 (열_이름1 데이터형식, 열_이름2 데이터형식, ...)")
      4. 데이터 입력하기(반복): 커서이름.execute("INSERT 문장")
      • 데이터 입력도 SQL 문을 사용해야 하므로 커서이름.execute() 함수를 사용함
      cur.execute("INSERT INTO 테이블_이름 VALUES(데이터1, 데이터2, ...)")
      cur.execute("INSERT INTO 테이블_이름 VALUES(데이터1, 데이터2, ...)")
      5. 입력한 데이터 저장하기: 연결자.commit()
      • 커밋: 앞에 입력한 데이터는 임시로 저장된 상태이므로 이를 확실하게 저장하기
      conn.commit()
      6. MySQL 연결 종료하기: 연결자.close()
      • 데이터베이스를 모두 사용했다면 연결한 데이터베이스를 닫아야 함
      conn.close()
  • 연동 프로그래밍: MySQL에서 데이터 조회
    • 2) MySQL의 데이터 조회를 위한 파이썬 코딩
      1. MySQL 연결하기: 연결자=pymysql.connect(연결 옵션)
      import pymysql
      conn = pymysql.connect(host=서버IP주소, user=사용자, password=암호, db=데이터베이스, charset=문자세트)
      2. 커서 생성하기: 커서이름=연결자.cursor()
      cur = conn.cursor()
      3. 데이터 조회하기: 커서이름.execute("SELECT 문장")
      cur.execute("SELECT 열_이름 FROM 테이블_이름")
      4. 조회한 데이터 출력하기(반복): 커서이름.fetchone()
      • fetchone(): 한 행씩 접근하기
      • fetchall(): 모든 행에 한꺼번에 접근하기
      while (True):
        row = cur.fetchone() -- 한 행씩 접근하기
        if row == None:
          break
        data1 = row[0]
        data2 = row[1]
        print(f"{data1} {data2}")
      5. MySQL 연결 종료하기: 연결자.close()
      conn.close()

✔️ 08-3 GUI 응용 프로그램

  • 파이썬을 통해 윈도에 출력되는 GUI 응용 프로그램 작성하기
    • GUI: Graphical User Interface의 약자, 윈도에 그래픽 환경으로 제공되는 화면

    • tkinter 라이브러리: GUI 관련 모듈을 제공해주는 표준 윈도 라이브러리

      • 엑셀, 한글, 크롬 등의 응용 프로그램과 비슷한 형태의 프로그램을 만들 수 있음
      from tkinter import *
      root = Tk() -- 부모윈도
      
      # 앞으로 이 부분에서 코딩을 추가해서 화면을 구성하고 처리함(제목, 크기, 위젯-라벨,버튼 등)
      
      root.mainloop()
    • 제목 및 크기

      • root.title(): 윈도 제목 지정
      • root.geometry("가로X세로"): 윈도 크기 설정
      root.title("GUI 연습장")
      root.geometry("400X200") -- root.geometry("가로X세로")
    • 위젯: 윈도에 나오는 버튼, 텍스트, 라디오 버튼, 이미지 등을 통합해서 지칭하는 용어

      • pack() 함수: 위젯을 화면에 나타나게 하는 함수
      • 위젯의 정렬
        • pack() 함수의 옵션: 가로로 정렬하는 방법은 side=LEFT 또는 side=RIGHT, 수직으로 정렬하는 방법은 side=TOP 또는 side=BOTTOM 방식
        button = Button(root, text="텍스트")
        button.pack(side=LEFT) -- side=LEFT
      • 위젯 사이 여백 추가
        • pack() 함수의 옵션: 여백을 주려면 padx=픽셀값 또는 pady=픽셀값
        button = Button(root, text="텍스트")
        button.pack(side=TOP, fill=X, padx=10, pady=10) -- padx=픽셀값, pady=픽셀값
    • 라벨

      • label(부모윈도, 옵션...) 형식: 라벨(문자를 표현할 수 있는 위젯)
      label = Label(root, text="텍스트입력")
      label.pack()
    • 버튼

      • Button(부모윈도, 옵션...) 형식: 라벨(마우스를 클릭하면 지정한 작업이 실행되도록 사용되는 위젯)
        • command 옵션: 사용자가 버튼을 눌렀을 때 지정한 작업을 처리해야 함
      from tkinter import messagebox
      
      def clickButton():
        messagebox.showinfo('제목', '내용')
        
      button = Button(root, text="클릭", fg="red", bg="yellow", command=clickButton)
      button.pack(expand = 1)
    • 프레임

      • 프레임: 화면을 여러 구역으로 나눌 때 사용함, Frame(부모윈도)
      upFrame = Frame(root)
      upFrame.pack()
      downFrame = Frame(root)
      upFrame.pack()
    • 엔트리

      • 엔트리: 입력 상자를 표현함, Entry(윈도, 옵션...)
      editBox = Entry(upFrame, width = 10)
      editBox.pack(padx = 20, pady = 20)
    • 리스트 박스

      • 리스트 박스: 목록을 표현함, Listbox(윈도, 옵션...)
      listbox = Listbox(downFrame, bg = 'yellow')
      listbox.pack()
      
      listbox.insert(END, '하나')

📌 참고문헌

우재남. (2021). 혼자 공부하는 SQL. 한빛미디어. p372-p406.

profile
The ultimate goal is to be a Data Scientist.

0개의 댓글