지난번에 python에서
MS-SQL에 접속해서
Query를 날리는 방법에 대해서
정리를 해 보았습니다.
그런데 그 때,
auto commit는 안된다고
말을 했었습니다.
기본적으로 파이썬에서는
오토커밋을 꺼놓고 있습니다.
그렇지만, 무조건 할 수 없는 것은 아닙니다.
DB 연결을 할 때,
설정을 해 줌으로써
오토커밋을 활성화 시킬 수 있습니다.
이번에는 파이썬에서
오토커밋을 활성화 시키는 방법에 대해
정리해보도록 하겠습니다.
방법은 간단합니다.
DB 연결을 할 때,
설정값을 하나 더 추가해주면 됩니다.
DB연결을 할 때
다음과 같이 설정을 해 주시면 되십니다.
#DB연결 conn = pymssql.connect(server="IP", user="계정", password="비번", database="DB명", autocommit=False) cursor = conn.cursor()
위처럼 해주시면 되십니다.
맨 마지막에 cutocommit라고
설정하는 부분이 있습니다.
이곳에 True, False를 입력해주시면 되십니다.
파이썬에서는 기본적으로
별도 설정이 없으면
False 입니다.
우선 기본값인 False로 설정을 해 보았습니다.
그리고 소스를 작성해보았습니다.
지난번에 한 것과
거의 동일한 소스입니다.
commit, rollback 하는
명령어만 없는 상황입니다.
import pymssql #DB연결 conn = pymssql.connect(server="IP", user="계정", password="비번", database="DB명", autocommit=False) cursor = conn.cursor() #select 쿼리 작성 cursor.execute("select id, member_name from test_member") row = cursor.fetchone() while row: print("id = " + str(row[0]) + ", member_name = " + str(row[1])) row = cursor.fetchone() print () #update 쿼리 cursor.execute("update test_member set member_name = '원빈' where id = 'iii' ") #select 쿼리 작성 cursor.execute("select id, member_name from test_member") row = cursor.fetchone() while row: print("id = " + str(row[0]) + ", member_name = " + str(row[1])) row = cursor.fetchone() conn.close()
위처럼 소스를 작성해 보았습니다.
그리고 실행을 해 보았습니다.
결과는 다음과 같습니다.
현빈에서 원빈으로 바뀐 것을
볼 수 있습니다.
그러면 SSMS에서
확인해보도록 하겠습니다.
현빈에서 바뀌지 않은 것을
확인할 수 있습니다.
즉, commit가 안되어서
실제로 DB에 적용이 되지 않은 것입니다.
그러면 이제 autocommit를 True로 설정해보겠습니다.
conn = pymssql.connect(server="IP", user="계정", password="비번", database="DB명", autocommit=True) cursor = conn.cursor()
위처럼 설정을 해 주시면 되십니다.
이렇게 설정을 하면 되기 때문에
설정하는 것은 어렵지 않습니다.
그러면 이제 오토커밋이 True인 상태로
실제 개발을 해보도록 하겠습니다.
소스는 다음과 같습니다.
import pymssql #DB연결 conn = pymssql.connect(server="IP", user="계정", password="비번", database="DB명", autocommit=True) cursor = conn.cursor() #select 쿼리 작성 cursor.execute("select id, member_name from test_member") row = cursor.fetchone() while row: print("id = " + str(row[0]) + ", member_name = " + str(row[1])) row = cursor.fetchone() print () #update 쿼리 cursor.execute("update test_member set member_name = '원빈' where id = 'iii' ") #select 쿼리 작성 cursor.execute("select id, member_name from test_member") row = cursor.fetchone() while row: print("id = " + str(row[0]) + ", member_name = " + str(row[1])) row = cursor.fetchone() conn.close()
위쪽에 있는 소스와 동일하며,
autocommit 설정 부분만
변경이 된 것입니다.
그러면 이제 구동을 해 보도록 하겠습니다.
그러면 결과는 다음과 같이 나옵니다.
이번에도 현빈에서
원빈으로 바뀐 것을
확인할 수 있습니다.
그러면 이제 SSMS에서
확인해보도록 하겠습니다.
SSMS에서도
변경이 된 것을 확인할 수 있었습니다.
즉, 별도의 commit 명령어가 없어도
바로 commit가 된 것을
확인할 수 있습니다.
autocommit는 좋을 수도 있고,
안좋을 수도 있습니다.
이것은 개발하시는 분이
상황에 따라
맞는 것을
필요한 것을
선택해서 개발해 주시면 되십니다.
이상으로 python에서 autocommit 설정하는 방법이였습니다~
'컴퓨터관련 > Python' 카테고리의 다른 글
[python]파이썬에서 리스트(List)사용하기 (0) | 2019.10.04 |
---|---|
[python]파이썬에서 컬럼명으로 데이터 가져오기 (4) | 2019.09.30 |
[python]파이썬에서 반복문(while, for)문 사용하기 (0) | 2019.09.20 |
[python]파이썬에서 if문 사용하기 (0) | 2019.09.18 |
[python]파이썬 변수 선언 및 사용 (0) | 2019.09.10 |