build my life

[Python] DB 연결 및 테이블 정보 불러오기 (pymysql 사용) 본문

Python

[Python] DB 연결 및 테이블 정보 불러오기 (pymysql 사용)

dalovee 2022. 8. 23. 18:54
728x90

오늘은 python으로 DB를 연결하고 그 안에 있는 테이블 정보를 불러오는 것에 대해서 배웠다.

이 모든 과정은 구글 colab으로 진행했다.

 

1. 패키지 다운로드

!pip install pymysql

 

2. 구글 드라이브 연결

from google.colab import drive
drive.mount('/content/drive')

 

3. DB 연결 정보 불러오기(HOST(DB주소), USER(접속아이디), PASSWD(접속패스워드))

import yaml

DB_INFO = "파일주소"
with open(DB_INFO, "r") as f:
	db_info = yaml.load(f, Loader = yaml.Loader)

=> DB 연결 정보를 yaml로 받았기 때문에 yaml 패키지 이용해서 불러옴!

=> 각자 정보가 담겨있는 파일을 불러온다고 생각하면 된다.

+) db_info {"HOST" : "DB주소", "USER" : "접속아이디", "PASSWD" : "접속패스워드"}

 

4. 각 DB 연결 정보 값을 변수에 넘겨준다.

HOST = db_info["HOST"]
USER = db_info["USER"]
PASSWD = db_info["PASSWD"]
PORT = 3306 #일반적으로 사용하는 포트번호

 

5. connect 함수를 이용해서 DB 연결 객체를 받아오자.

# connect함수 이용하여 연결 객체 받아오기
import pymysql
conn = pymysql.connect(
    user = USER,
    passwd = PASSWD,
    host = HOST,
    port = PORT,
    db = '연결하고 싶은 DB명'
)

 

6. SQL 구문을 실행하기 위해  Cursor 객체를 생성해보자.

cur = conn.cursor() #튜플 형식으로 쿼리 실행 결과를 받아오는 객체
cur = conn.cursor(pymysql.cursors.DictCursor) #dict 형식으로 쿼리 실행 결과를 받아오는 객체

=> Cursor 객체를 이용해서 sql을 DB서버에 전달할 수 있다!

 

1) DB 서버에 SQL 전달 - execute()

sql = "select * from db_name"
cur.execute(sql)

 

2) 쿼리 실행 결과를 가져오는 메소드 - fetchall()

- 튜플 자료형으로 가져온다.

- 한번 꺼내온 후 실행결과가 사라지기 때문에 두번 실행 시 결과 반환이 안된다는 걸 알아두자.

cur.fetchall() # 실행결과 전체를 불러온다.
cur.fetchone() # 실행결과를 한 행씩 불러온다. 모든 행을 다 가져올 때 까지 실행가능하다.

 

❗ 주의할 점

- 사용한 cursor객체(cur)와 연결 객체(conn)는 꼭 닫아주고 끝내줘야한다!

cur.close()
conn.close()

 

 

728x90