Computer_Language/DataBase_Python

[DB][MySQL] pymysql을 사용하여 파이썬에서 DB 다루기

Joo-Topia 2019. 10. 21. 15:41

이번 포스트는 MySQL을 파이썬으로 다루기 위해 기본적인 pymysql 모듈의 사용법에 대해 정리해보려고 한다.

 

pymysql 모듈 설치


pymysql을 모듈을 설치하는 방법이다.
간단하게 파이썬 모듈을 설치하던 방식으로 설치하면 된다.

 

import pymysql

connect = pymysql.connect(host='localhost', port=3306, user='root', password='********', db='JOO_DATA', charset='utf8')
cursor = connect.cursor()

sql = "select * from CS"
cursor.execute(sql)
print(cursor.fetchall())

필자는 윈도우에서 docker를 이용해 MySQL환경을 만들어 두었기에 위 코드로 접속을 하게 된다.

간혹 아래와 같은 오류가 뜨는 경우가 있다.

cryptography를 설치해두면 간단하게 해결할 수 있다. (이유는 모르겠다!!ㅎㅎ)

 

기본 사용법


위의 예제 코드가 사실 가장 기본적인 사용법이다.

INSERT 문 같이 데이터베이스를 변경하는 명령을 사용할 때는 추가적인 작업이 필요하다.

import pymysql

connect = pymysql.connect(host='localhost', port=3306, user='root', password='tjdals103', db='JOO_DATA', charset='utf8')
cursor = connect.cursor()

sql = "select * from CS"
cursor.execute(sql)
print(cursor.fetchall())

#cursor 로 데이터베이스에 접근해 INSERT명령어를 수행했지만 데이터베이스 원본에는 적용되지 않음.
cursor.execute("INSERT INTO CS VALUES('C++','middle','middle');")
cursor.execute(sql)

sql = "select * from CS"
cursor.execute(sql)
print(cursor.fetchall())

#comiut명령어를 사용하면 위에 사용했던 INSERT문이 데이터베이스에 적용되어 코드를 다시 실행시키면 에러가 발생
#connect.commit()
connect.close()

위 예제는 commit 명령을 생략하고 수행했다.
execute 함수를 사용하여 sql문을 DB서버에 보낸 후 fetchall 함수를 사용하여 DB서버에서 데이터를 가져온다.

분명 INSERT를 했지만 실제 데이터베이스에는 적용되지 않은 것을 볼 수 있다.

commit명령의 주석을 풀고 실행해보면 DB에 적용이 되는데, 직접 실습해본 후 결과를 보도록 하자!

 

commit에 대해서 잘 정리된 글이 있어서 출처를 밝히고 가져왔다.

출처 : https://kimsg.tistory.com/258

 

마무리


정말 기본적인 pymysql에 대한 사용법을 정리하는 시간이었다.

다음 포스트에서는 아마 pymysql을 사용하여 아주 간단한 DB기반 프로그램을 만들어 볼 것 같다!