지난 포스팅에서는 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()함수를 추천한다.
'주식필터프로그램 제작하기 > PYMYSQL' 카테고리의 다른 글
MYSQL 기본 명령어 정리 (0) | 2020.12.05 |
---|---|
파이썬 PYMYSQL 기본 명령어 정리 (0) | 2020.12.04 |