MySQL - 8.1,2 SQL과 파이썬 연결 - 파이썬 개발 환경 준비, 파이썬과 MySQL의 연동

govlKH·2023년 7월 2일
0

SQL

목록 보기
16/17
post-thumbnail

MySQL - 8.1 SQL과 파이썬 연결 - 파이썬 개발 환경 준비

파이썬 프로그래밍을 위해서는 개발환경을 구축해야 한다.
파이썬에는 MySQL을 인식하는 기능이 없으므로 PyMySQL이라는 외부 라이브러리를 설치를 통해 연결시켜준다.
이를 통해 MySQL과 파이썬을 연동해서 프로그래밍을 하면 MySQL전문가가 할 수 있는 기능들을 일반 사용자도 손쉽게 사용할 수 있게 된다. (파이썬에 PyMySQL을 장착)

MySQL - 8.2 SQL과 파이썬 연결 - 파이썬과 MySQL의 연동

파이썬과 pymysql 라이브러리를 설치한 후에는 MySQL과 연동하는 데이터베이스 연동 프로그램을 작성할 수 있다. 파이썬 프로그램을 작성하는 가장 큰 이유는 일반 사용자가 데이터베이스의 내용을 사용하고자 할 때 SQL까지 배우기에는 무리가 있기 때문이다. 파이썬을 잘 이용한다면, 일반 사용자는 SQL대신 간단한 명령어를 입력하는 것 만으로도 데이터베이스에서 원하는 결과를 얻을 수 있다. 즉, SQL의 활용도가 더욱 높아질 수 있다는 것이다!

(파이썬과 SQL연동 - 혼공SQL 교재)

연동 프로그래밍 기본

파이썬과 MySQL 데이터베이스를 연동해보자. 연동 프로그램이 완성되면 MySQL워크벤처 없이도 MySQL에 접근하고 사용할 수 있다.

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

  • MySQL Workbench에서 데이터베이스 생성
DROP DATABASE IF EXIST soloDB;
CREATE DATABASE soloDB;

이후부터는 파이썬에서 다 다룬다.
(커서는 SQL문을 실어서 전달하는 도구, 커서를 이용해서 테이블을 만들고 데이터를 입력하고 한다. 이렇게 입력한 후에는 예전에 apply시켰던 것과 같이 commit을 통해 지금까지 입력해준 데이터를 저장한다. 마지막으로 연결한 DB를 종료한다.)

(파이썬 MySQL 연동 - 혼공SQL 교재)

import pymysql

# 1. mysql 연결
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')

# 2. 커서 생성하기
cur = conn.cursor()

# 3. 테이블 만들기 - 0이 나오면 잘 되는 것
cur.execute("CREATE TABLE userTable (id char(4), userName char(15), email char(20), birthYear int)" )

# 4. 데이터 입력하기 - 1이 나오면 잘 되는 것
cur.execute("INSERT INTO userTable VALUES('hong', '홍지윤', 'hong@naver.com', 1996)")
cur.execute("INSERT INTO userTable VALUES('kim', '김태연', 'kim@daum.com', 2011)")
cur.execute("INSERT INTO userTable VALUES('star', '별사랑', 'star@paran.com', 1990)")
cur.execute("INSERT INTO userTable VALUES('yang', '양지은', 'yang@gmail.com', 1993)")

# 5. 입력한 데이터 저장하기
conn.commit()

# 6. MySQL 연결 종료하기
conn.close()

잘 들어간 것을 확인할 수 있다.

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

이번에는 사용자가 반복해서 데이터를 입력하는 코드를 작성해보겠다!
앞에서 생성한 soloDB의 userTable에 직접 키보드로 입력받아 한 행씩 계속해서 데이터를 입력하겠다. 그리고 더 이상 입력할 데이터가 없으면, enter 키를 입력하여 종료하는 것으로 처리하는 코드를 짜 보겠다.

import pymysql

# 전역 변수 선언부
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
sql = ""

# 메인 코드
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.cursor()

while (True):
    data1 = input('사용자 ID ==> ')
    if data1 == "":
        break;
    data2 = input('사용자 이름 ==> ')
    data3 = input('사용자 이메일 ==> ')
    data4 = input('사용자 출생연도 ==> ')
    # INSERT INTO userTable VALUES('hong', '홍지윤', 'hong@naver.com', 1996)
    sql = "INSERT INTO userTable VALUES('" + data1 + "', '" + data2 + "', '" + data3 + "', '" + data4 + "')"
    cur.execute(sql)
    
conn.commit()
conn.close()

사용자는 DB도 모르고 파이썬 코드도 모르지만, 이를 통해 입력만 하면 수월하게 사용할 수 있다!

수지가 들어갔음을 확인할 수 있다.

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

파이썬으로 데이터를 조회하기 위해서는 아래와 같은 단계를 거치게 된다. 데이터를 입력할 때와 비슷하지만, 차이점이 존재한다.

(데이터 조회 - 혼공SQL 교재)

import pymysql

# 전역 변수 선언부
conn, cur = None, None
data1, data2, data3, data4 = "", "", "", ""
row = ""  # 행을 하나씩 읽어오기 위해 row를 설정

# 메인 코드
conn = pymysql.connect(host='127.0.0.1', user='root', password='0000', db='soloDB', charset='utf8')
cur = conn.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   %15s   %20s   %d"%(data1, data2, data3, data4))
    
conn.close()

profile
수학과 대학원생. 한 걸음씩 꾸준히

0개의 댓글