본문 바로가기
  • Coding & Book
학습단/SQL 학습단

MySQL과 파이썬 연동(개발 환경 준비)

by 루이3 2023. 8. 18.

연동 하는 이유

  • MySQL과 파이썬을 연동해서 프로그래밍하면
    MySQL 전문가가 할수 있는 기능들을 일반 사용자도 쉽게 사용할수 있어 사용합니다.

 

MySQL과 파이썬 연동 방법

  • 파이썬을 설치해주고  파이썬에는  MySQL을 인식 하는 기능이 없으므로 PyMySQL 이라는
    외부 라이브러리를 설치해줘야 합니다.

 

파이썬 설치 방법

  • 먼저 파이썬부터 설치해주겠습니다.
  • 아래 사이트에서 원하는 버전을 설치해주시면 됩니다.

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

외부 라이브러리 설치 방법

  • pymysql을 설치 하는 방법 입니다.
  • windows + r 키를 누르고 cmd를 입력하고 확인 버튼을 눌러줍니다.
  • 그 후 pip install pymysql 을 입력해주시면 됩니다.
    (명령 프롬프트는 exit로 종료가 가능합니다.)

 

 

 

파이썬 사용방법

  • 파이썬은 IDLE이라는 환경에서 코드를 실행합니다.
  • IDLE는 파이썬을 개발하는 통합 개발 환경을 말합니다.
  • 입력한 내용이 결과로 나오는 대화형 모드와 여러줄을 입력한 후
    한꺼 번에 실행하는 스크립트 모드가 있습니다.

 

 

연동 프로그래밍 기본

  • 파이썬과 MySQL 데이터 베이스를 연동해보겠습니다.

 

1. 먼저 DB를 만들어주겠습니다.

CREATE DATABASE soloDB;

 

 

2. 그 다음 부터는 파이썬에서 데이터를 입력해주겠습니다.

파이썬에서 MySQL을 사용하기 위해 pymysql을 임포트 한 후 pymysql.connect()로
데이터베이스와 연동해주어야 합니다. (연결이 성공해도 아무런 메시지가 안나옵니다.)

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

 

 

코드)

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

 

 

3. 커서를 만들어 줍니다.

커서는 데이터베이스에 SQL 문을 실행하거나 실행된 결과를 돌려받는 통로로 생각하면 됩니다.

cur이라는 변수를 커서로 사용하겠습니다.

cur = login.cursor()

 

 

4. 테이블을 만들어줍니다.

테이블을 만드는 SQL문을 커서이름.execute() 함수의 매개변수로 넘겨주면 SQL문이 데이터베이스에 실행됩니다.

(파이썬에서도 MySQL 워크벤치에서 사용한것돠 동일한 SQL문을 사용하면 됩니다.)

(여기서 저는 IDLE SHELL이 아닌 VSCode로 진행하겠습니다.)

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

 

 

5. 데이터를 넣어 줍니다.

데이터 입력도 SQL문을 사용해야 하므로 커서이름.execute() 함수를 사용합니다.

데이터를 확실하게 저장하기 위해 커밋을 사용합니다.(임시저장된 상태라 꼭 하셔야 합니다.)

cur.execute("INSERT INTO userTable VALUES( 'iron','토니','ironman@gmail.com', 2008)")
cur.execute("INSERT INTO userTable VALUES( 'thor','토르','thor@gmail.com', 2011)")
cur.execute("INSERT INTO userTable VALUES( 'hulk','헐크','hurk@gmail.com', 2003)")
cur.execute("INSERT INTO userTable VALUES( 'cap','캡틴','captain@gmail.com', 2011)")

login.commit()

 

 

6. 데이터 베이스를 닫기 위해 아래 코드를 사용합니다.

login.close()

 

지금 까지 전체 코드)

  • 중간에 잘못된게 생성되어 DROP 구문을 한번 사용했습니다.
import pymysql
login = pymysql.connect(host=서버ip주소, user=사용자, password=암호, db=데이터베이스, charset=문자세트)
cur = login.cursor()


cur.execute("DROP TABLE IF EXISTS userTable")
cur.execute("CREATE TABLE userTable (id char(4), userName char(15), email char(20), birthYear int)")
cur.execute("INSERT INTO userTable VALUES( 'iron','토니','ironman@gmail.com', 2008)")
cur.execute("INSERT INTO userTable VALUES( 'thor','토르','thor@gmail.com', 2011)")
cur.execute("INSERT INTO userTable VALUES( 'hulk','헐크','hurk@gmail.com', 2003)")
cur.execute("INSERT INTO userTable VALUES( 'cap','캡틴','captain@gmail.com', 2011)")

login.commit()
login.close()

 

7. 이를 데이터 베이스에서 확인하면 잘 적용이 된것을 확인 할수 있습니다.

 

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

사용자가 반복해서 데이터를 입력하는 코드를 작성해보겠습니다.

import pymysql

login, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
sql=""

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

while (True) :
    data1 = input("사용자 ID ==> ")
    if data1 == "" :
        break
    data2 = input("사용자 이름 ==> ")
    data3 = input("사용자 이메일 ==> ")
    data4 = input("사용자 출생연도 ==> ")
    sql = "INSERT INTO userTable VALUES('" + data1 + "','" + data2 + "','" + data3 + "'," + data4 + ")"
    cur.execute(sql)

login.commit()
login.close()

 

 

 

 

 

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

테이블의 데이터를 조회하는 코드를 작성하겠습니다.

fetchone() 함수로 결과를 한 행씩 추출하여 모든 행을 추출하겠습니다.

import pymysql

login, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
row=None

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

cur = login.cursor()
cur.execute("SELECT * FROM userTable")

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

while (True) :
    row = cur.fetchone()
    if row== None :
        break
    data1 = row[0]
    data2 = row[1]
    data3 = row[2]
    data4 = row[3]
    print("%5s   %8s   %20s   %d" % (data1, data2, data3, data4))

login.close()

 

 

알아두기) 파이썬의 서식지정자 입니다.

서식 지정자 의미
%d 정수
%f 실수
%c 문자
%s 문자열

 


수많은 오류들을..