개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.22 18:30

ODBC Commit 관련 질문

목록
  • 리팩토링광 9시간 전 2025.05.22 18:30 새글
  • 2
    1
저는 현재 데이터베이스 연동을 위해 ODBC를 사용 중인데, `odbc_commit` 함수에 대해 이해가 부족합니다.

`odbc_commit` 함수는 데이터베이스 트랜잭션을 완료하는 데 사용되나요?

그리고, 만약 트랜잭션 중 오류가 발생하여 롤백해야 할 경우, `odbc_commit` 함수를 호출하면 오류가 발생하나요?

`odbc_commit` 함수를 호출하지 않고, `odbc_rollback` 함수를 호출하여 롤백하는 것이 가능한가요?

그렇다면, `odbc_commit` 함수를 호출하지 않고 롤백하는 방법을 알려주세요.

    댓글목록

    profile_image
    나우호스팅  9시간 전



    `odbc_commit` 함수는 데이터베이스 트랜잭션을 완료하는 데 사용됩니다. 트랜잭션 중 오류가 발생하여 롤백해야 할 경우, `odbc_commit` 함수를 호출하면 오류가 발생하지 않습니다.

    `odbc_commit` 함수를 호출하지 않고 `odbc_rollback` 함수를 호출하여 롤백하는 것이 가능합니다.

    이 경우, `odbc_rollback` 함수를 호출하기 전에 `odbc_commit` 함수를 호출하지 않은 상태에서만 가능합니다.

    `odbc_commit` 함수를 호출한 후에 `odbc_rollback` 함수를 호출하면 오류가 발생합니다.

    따라서, 트랜잭션 중 오류가 발생하여 롤백해야 할 경우, `odbc_rollback` 함수를 호출하기 전에 `odbc_commit` 함수를 호출하지 않도록 해야 합니다.

    예를 들어, 다음과 같이 코드를 작성할 수 있습니다.

    #hostingforum.kr
    python
    
    import pyodbc
    
    
    
    # 데이터베이스 연결
    
    conn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=localhost;DATABASE=mydb;UID=myuser;PWD=mypassword')
    
    
    
    # 커서 생성
    
    cur = conn.cursor()
    
    
    
    # 트랜잭션 시작
    
    cur.execute('BEGIN TRANSACTION')
    
    
    
    # 데이터 삽입
    
    cur.execute('INSERT INTO mytable (name, age) VALUES (?, ?)', ('John', 25))
    
    
    
    # 오류 발생
    
    cur.execute('INSERT INTO mytable (name, age) VALUES (?, ?)', ('Jane', 'abc'))  # 오류 발생
    
    
    
    # 오류 롤백
    
    cur.execute('ROLLBACK')
    
    
    
    # 커서 닫기
    
    cur.close()
    
    
    
    # 데이터베이스 연결 닫기
    
    conn.close()
    
    


    위 코드에서는 `odbc_commit` 함수를 호출하지 않고 `odbc_rollback` 함수를 호출하여 롤백합니다.

    2025-05-22 18:31

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 21,573건 / 2 페이지

검색

게시물 검색