본문 바로가기
컴퓨터관련/Python

[python]파이썬에서 오토커밋 설정하기

by 빛과 어둠사이 2019. 9. 25.
728x90
반응형
SMALL

지난번에 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 설정하는 방법이였습니다~


728x90
반응형
LIST