프로그래밍/DataBase_Python

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

Joo-Topia 2019. 10. 21.
728x90

이번 포스트는 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기반 프로그램을 만들어 볼 것 같다!

728x90

댓글