MySQL/혼공SQL

22강. 파이썬과 MySQL 연동하기

묘걍 2023. 12. 13. 17:20

08-2. 파이썬과 MySQL의 연동

👉🏻DB 연동

출처: 혼공SQL 유튜브

  • MySQL 테이블에 접근할 때 SQL문을 통해 접근했었음
  • 그런데 일반 사용자는 SQL문을 알지 못함
  • 그래서 파이썬으로 일반 사용자는 간단한 명령어 만으로 파이썬 응용 프로그램을 통해서 DB를 사용하게 하는 것

👉🏻 연동 프로그래밍 기본

🧩 활용할 쇼핑몰 DB

출처: 혼공SQL 유튜브

- DB만 만들고 테이블부터는 파이썬으로

🎮 DB 만들기

- MySQL 워크스페이스에서는 DB만 만든다

🧩 절차

출처: 혼공SQL 유튜브

- 파이썬에서 MySQL로 연결해야함

✅ 커서

  • 연결 후에 연결을 통해 쿼리문을 전달하는 도구
  • SQL문을 커서에 실어서 전달하는 도구

- 커서를 통해 테이블을 만든다

- 데이터를 입력하는 것은 여러번 가능하기 때문에 필요한 만큼 반복

- 입력이 다 끝나면 하는 APPLY = COMMIT

- 다음에 같은 테이블에 입력할 때는 테이블 만들기 부분만 생략하면 됨

🎮 파이썬 실습

- 아무 메시지 안 나오면 잘 된 것

1️⃣ MySQL 연결하기

- connection 변수 이름을 conn, 연결자라고 생각하면 된다

- 연결할 호스트 127.0.0.1: 파이썬이 깔려있는 컴퓨터에 MySQL도 설치되어 있다

     - 자기 자신이라는 뜻

     - 다른 컴퓨터에서 할 경우 그 컴퓨터 ip로 바꿔주면 됨

- 유저, 비밀번호 등 또한 사용하는 것에 맞게 바꿔주면 된다

- charset은 한글이 깨지지 않도록 utf8

- 아무 메시지가 안 나오면 잘 한 것

2️⃣ 커서 생성하기

- 거의 변경 없이 사용하는 코드

3️⃣ 테이블 만들기

- 0 나오면 잘 된 것

- 다시 실행하면 오류난다. 이미 테이블이 있으니

4️⃣ 데이터 입력하기

- 1은 한 개의 행이 잘 들어갔다는 의미

- 나머지 데이터도 넣기

5️⃣ 입력한 데이터 저장하기

6️⃣ MySQL 연결 종료하기

🎮 MySQL Workbench에서 확인해보기

* 이건 흐름을 파악하기 위함이고 이런 흐름을 담은 파일을 만들어 사용자들이 실행하도록해야

   사용자들이 파이썬이나 SQL문을 몰라도 사용할 수 있게 되는 것이다

🎮 한 파일로 만들기

- IDLE 실행 후 NEW FILE 열기

- pymysql 을 import

- 변수를 미리 준비하고 None으로 비어있게 만든다

- 입력 받을 변수도 준비하고 비워둔다

- sql문 변수도 준비하고 비워둔다

- MySQL 연결과 커서 만드는 것은 위와 같다

- 테이블 만들기는 위에서 했기 때문에 생략

- 이번에는 사용자가 원하는 만큼 입력할 수 있도록 while (True) 사용

- ID를 먼저 입력해야한다

      - ID 없이 그냥 엔터쳐버리면 그만 입력하겠다는 의미로 받아들임

- 사용자가 입력한 내용을 DB에 넣어줘야한다

     - INSERT문

     - 입력받은 내용들을 조합하기 위해 +를 이용한다

- 조합을 통해 만들어진 SQL문을 sql 변수에 넣어

- cur.execute() 함수 안에 넣어주면 위에서 한 줄씩 입력한 것과 같은 방식으로 입력할 수 있는 것이다

- 다 끝났으면 커밋

- 닫으면된다

- 실행해보기

이렇게 입력할 수 있게 됨

- 다시 다음 사용자를 입력할 수 있도록 나오는데 더이상 입력하지 않으려면 그냥 엔터치면 됨

- 다시 조회해보면

👉🏻 데이터 조회

출처: 혼공sql 유튜브

- 마찬가지로 전역변수를 준비한다

- 이번에는 SQL문이 고정되어있기 때문에 전역변수 선언부에서 선언하지 않는다

- 읽어올 행을 위한 row변수를 준비한다

- 연결과 커서준비는 똑같다

- 고정된 SQL문

- 표처럼 보이게 하기 위한 print문

- 몇 건인지 알 수 없으니 반복 횟수를 정하지 않고 while(True)로 한 뒤 행이 끝날 때 까지 반복한다

- 테이블에 있는 데이터들을 cur에 담아 둔다

- cur.fetchone()cur에 담긴 데이터들을 한 건씩 (맨 위에 있는 것)가져온다는 것이다

- 읽은 게 없다면 while문을 빠져 나간다

- 각 열에 들은 내용들을 data1 ~ 4 변수에 담은 다음

- 5글자, 15글자, 20글자, 숫자 형식에 맞춰 각각을 print해준다

- 커밋은 변경이 있을 때만 하면 된다 조회에서는 필요 없다

- 닫는다

- 실행하면 이렇게 조회할 수 있음

- 칸 조절은 글자수로 한거

 

 

 

 

 

 

 

 

 

 

출처: https://youtu.be/Se1ImwcqmlA?si=w0PtzHRnk0YxHTgF