지난 포스팅에서는 pymysql 로 mysql을 제어하는법을 알아 보았다.
그런데 포스팅한대로 쿼리를 보내다 보니,
갑자기 DELETE와 INSERT명령어로 요청한 쿼리가 실제 DB에 반영이 안되는 현상이 나타났다.

아래 세 가지가 동시에 나타난다면 이 글이 매우 도움이 될 것 이다.

[현상]

1. python에서 mySQL로 쿼리를 전송하는 명령어를 실행할 때 빌드 오류가 없다.
2. 쿼리 실행 시, python 터미널 창에서는 쿼리에 대한 RESPONSE가 정상적이다.
3. 그러나 mySQL에서 확인한 최종 DB는 변함이 없다.

 

[문제의 CODE]

conn = pymysql.connect(user='user', password='pasword', host = 'host', database = 'database')
cur = conn.cursor()
cur.execute("DELETE FROM `database`,`table`")
cur.close()
conn.close()

 

[수정된 CODE]

conn = pymysql.connect(user='user', password='pasword', host = 'host', database = 'database')
cur = conn.cursor()
cur.execute("DELETE FROM `database`,`table`")
cur.close()
conn.commit()

conn.close()

[해설]

conn.commit() 한줄만 추가하면 된다.
보통 수많은 예제들이 commit 없이,
cursor와 connection만 close를 하는데, 그렇게 되면 mySQL에 반영이 되지 않는다.

혹은 connection 을 만들 때, autocommit=TRUE 옵션을 추가하는것도 또하나의 방법이다.

둘중에는 보안상 더 안전한 commit()함수를 추천한다.

+ Recent posts