노트와 노트

Python을 사용하여 Mysql Database에 접근하기 본문

Programming/Python

Python을 사용하여 Mysql Database에 접근하기

gellygelly 2021. 11. 9. 20:53

다양한 라이브러리들이 존재하지만, pymysql 라이브러리를 이용해서 데이터베이스에 연결하고 데이터를 조작해보았다. 

DB 연동하는 코드는 한 번 작성해두면 정말 편리해서 매번 찾아볼 수고를 덜기 위해 작성했다~

 

1) pymysql 라이브러리 설치

pip install pymysql

 

2) DB 연결 및 cursor 설정

connect() 함수를 이용해 host의 DB와 연결한다. 본인이 연결할 DB에 맞게 정보를 입력해서 텍스트 형태로 인자를 넘겨주면 된다. 

 cursor()는 연결할 DB의 fetch 동작을 관리하는 데 사용된다. 아래 코드처럼 기본 형태로 넘겨주게 되면 튜플 형태로 결과를 리턴해 준다. 

conn = pymysql.connect(host='hostname', user='username', password='your_password', charset='utf8')
cursor = conn.cursor()

 

만약, 튜플이 아닌 딕셔너리 형태로 결과를 받고 싶다면 아래처럼 DictCursor를 지정해주면 된다. 

cursor = juso_db.cursor(pymysql.cursors.DictCursor)

 

3) SQL문 실행 및 결과 받아오기

execute()문을 통해 작성한 sql문을 실행하고, fetchall() 함수를 통해 실행 결과를 모두 받아올 수 있다. 

self.cursor.execute(sql) # sql문 실행
result = self.cursor.fetchall() # 결과 전부 받아오기
#print(result)
self.conn.commit() # 데이터 삽입/삭제/수정 시 sql문 실행 결과 DB에 적용!

결과를 받아올 때, 아래 함수 목록을 보고 원하는 함수를 사용하면 될 것 같다. 

함수명 설명
fetchall() 리턴된 모든 행(결과)를 받아옴
fetchone() 한 번 호출에 하나의 행만 받아옴
fetchmany(n) n개만큼의 행만 받아옴

 

4) 전체 코드

 

# MySQL connect

import pymysql

class connectDB(object):

    conn = pymysql.connect(host='host', user='user', password='your_password', charset='utf8') #db 연결
    cursor = conn.cursor() #cursor 객체 생성

    def runSQL(self, sql):
        self.cursor.execute(sql) # SQL문 실행
        result = self.cursor.fetchall() # SQL문 실행 결과 받아옴
        #print(result)
        #self.conn.commit() # SQL문 실행 결과 DB에 적용
        
        return result

if __name__ == "__main__":
  dbb = connectDB()
  sql = "select * from `mydb`.`coatItemTable`;" # `DB명`.`테이블명`
  dbb.runSQL(sql)

 

sql문에서 `mydb`.`coatItemTable`로 DB명과 테이블명을 모두 명시해줬는데, connect() 함수에서 인자로 db='db명'을 넘기면 db명을 생략해도 된다. 

 

conn=pymysql.connect(host='host', user='user', password='your_password', db='mydb', charset='utf8')