본문 바로가기
PYTHON

파이썬[python] mysql연동 방법(pymysql) 알아보기

by 꾸꾸까까DEV 2022. 8. 22.
반응형

이번 시간은 파이썬을 이용하여 mysql 데이터베이스를 다루는 방법에 대해 알아보자.

파이썬에는 mysql DB를 컨트롤할수 있는 여러가지 라이브러리 들이 존재하지만, 개인적으로 가장 선호하는 pymysql 에 대해 소개해 보려한다.

 

 
 

목차

  1.  패키지 로딩방법
  2.  사용방법
  3.  활용함수

 

 

1. 패키지 로딩방법

 

pip 를 이용하여 pymysql 패키지를 설치한다.

터미널 창에서 

 

$pip install pymysql

 

위 명령어를 입력하면 자동으로 설치가 된다.

 

 

설치 완료후 

 

import pymysql

 

위와 같이 requests 패키지를 import 하면, 바로 mysql을 접속할수 있는 준비가 끝나게 된다.

 

 

2. 사용방법

pymysql의 사용방법은 아주 간단하다.

 

- mysql 접속 connect()

pymysql.connect(host, port, user, passwd, db)

 

connect 함수에 DB접속정보를 넣으면 바로 연결이 된다.

 

conn = pymysql.connect(host, port=3306, user=db_user, passwd=password, db=db_name, autocommit=True, charset='utf8')
cur = conn.cursor(pymysql.cursors.DictCursor) # 반환데이터에 컬럼값이 키가 되도록 세팅
cur = conn.cursor()# 반환데이터에 인덱스가 키가 되도록 세팅

 

cursor() 함수로 반환데이터의 타입을 결정한다.

 

 

- 쿼리 실행 execute()

위에서 만든 cur을 이용하여, 쿼리를 실행할 수 있다.

 

cur.execute("SELECT * FROM user")

 

 

- 데이터 가져오기 fetch

 

쿼리 실행후 결과 데이터를 가져올때에는 fetchone() 와 fetchall()을 사용할 수 있다.

 

fetchone() - 결과로부터 데이터 1줄(row)를 반환
fetchall() - 모든데이터를 반환

 

rows = cur.fetchall() # 전체 가져오기
row = cur.fetchone() # 한줄 가져오기

print("rows :" rows)
print("row :" row)

 

 

 

3. 활용함수

 

DB 접속은 자주 사용하는 기능이니, 간단하게 클래스로 구현하여 사용하는것을 추천한다.

 

dbconn.py

# -*- coding: utf-8 -*-
import pymysql

class dbconn:
    def __init__(self, host, user, passwd, db, cs='utf8'):
        self.db_host = host
        self.db_user = user
        self.db_password = passwd
        self.db_name = db
        self.db_charset = cs
        self.conn = pymysql.connect(host=self.db_host, port=3306, user=self.db_user, passwd=self.db_password, db=self.db_name, autocommit=True, charset=self.db_charset)

    def sql_exec(self, qry, _type):
        cur = self.conn.cursor(pymysql.cursors.DictCursor)
        cur.execute(qry)
        if(_type=="S"):
            rows = cur.fetchall()
            return rows

 

클래스 사용방법

import dbconn as db
dbconn = db.dbconn("172.16.38.xxx", "user", "password", "dbname")

qry = "SELECT * FROM user"
tmp = dbconn.sql_exec(qry, 'S')

qry = "UPDATE user SET id='aaa' WHERE seq=1 "
dbconn.sql_exec(qry, 'U')

 

반응형