pymysql

heumheum2·2020년 10월 6일
0
post-thumbnail

DB에 값을 추가할 상황이 생겼다. 처음에는 bash로 mysql에 연결해 조작하다보니 결과 값을 파싱하기 어려웠다. 팀원에게 질문을 하니 python이 있는데 왜 bash로 하느냐라고 답변을 받아 python으로 작업하게 되었다.

파이썬과 mysql 연결을 도와주는 라이브러리이다. 이것을 사용하기 위해 pip라는 파이썬 전용 설치 패키지를 이용해야했다. 나는 Mac 사용자이니 mac pip 설치관련 자료를 검색해봤다. 간단한 명령어였다.

sudo easy_install pip

~~정말 이지하게 설치했다.~~

python이 기존에 설치는 되어 있지만 2.7버전이라 업데이트를 하라고 권유를 하기에 brew를 통해 python3을 설치했다.

brew install python3

그리고 python만 입력해도 python3이 나오도록 하는 환경설정도 같이 해주었다.

sudo vim ~/.bash_profile

alias python='python3'
alias pip='python3 -m pip'

export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export $PATH

저장 후, source로 등록을 한다.

source ~/.bash_profile

이렇게 설정을 마치면 python만 입력해도 python3가 실행될 것이다.

다음으로 pythonmysql을 연결해야 한다.

pip install PyMySQL

설치가 잘 완료가 되었으면 이제 test.ph 파일을 만들어서 import pymysql을 작성하면 끝!

db의 연결은 아래 코드처럼 작성하면 된다.

import pymysql as mysql
db = mysql.connect(host='', user='', password='', db='', charset='')

try:
    with db.cursor() as cursor:
        sql = "SELECT id, name FROM user"
        cursor.execute(sql)
        result = cursor.fetchall()

        for row in result:
            print(row) #('hello', 'world')
            sql2 = "UPDATE test SET name=%s WHERE text=%s"
            cursor.execute(sql2, (row[0], row[1]))
            db.commit()
finally:
    db.close()

또한 pymysql에서는 cursor를 이용해 db를 제어 가능하다.

그리고 try..with..finally로 db 연결을 하나씩 해제시키지 않아도 되기에 with를 사용해 원하는 쿼리문을 작성 후 finally로 연결을 해제한다.

fetchall(), fetchone(), fetchmany() 를 이용해 컬럼을 모두 가져오느냐, 하나의 컬럼만 가져오느냐, 한 줄의 컬럼을 가져오느냐로 나눌 수 있다. 모두 가져올 경우 for ... in의 반복문으로 한 줄의 한 속성 씩 가져올 수 있다.

또, 파이썬은 구분자 %s 를 통해 변수 값을 execute() 안에서 지정 할 수 있다.

참고

https://dejavuqa.tistory.com/132

https://yurimkoo.github.io/python/2019/09/14/connect-db-with-python.html

http://pythonstudy.xyz/python/article/202-MySQL-쿼리

profile
커피가 본체인 개발자 ☕️

0개의 댓글