database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Tutorials 23532 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 23532
SAPDB PYTHON에서 SAPDBAPI를 이용한 접속
작성자
남녀평등(linux199)
작성일
2002-12-04 09:44
조회수
13,797

오늘은 Python에서 SAPDBAPI를 이용해서 SAPDB에 접근해 보기로 하자

SAPDBAPI는 제공되는 Python Interfaces 중 Python DB API 2.0에 근거하여 만들어진 모듈이다.

이것을 이용할 경우 다른 DB로의 전환이 용이하고 또한 같은 형태로 코딩이 가능하기 때문에 재사용성이 극대화된다.

그럼 이제 알아보도록 하자.

 

※ Python 소스 중간중간에 나오는 ____ 는 모두 스페이스로 대치하기 바란다. 그렇지 않으면 에러가 발생한다

 

 

우선 sapdbapi에는 몇가지의 Object가 들어있다

 

첫번째 Object는 Connection 오브젝트이다.

 

Connection 오브젝트는 sapdbapi.Connection 혹은 sapdbapi.connect 를 통해서 얻을 수 있다

두 메소드 모두 4개의 인자값을 필요로 하는데 차례대로 사용자명, 패스워드, DB명, 서버명 이다. 로컬 서버일 경우 서버명은 생략 가능하다

 

아래의 간단한 예를 보자

 

 

import sapdbapi

 

conn = sapdbapi.connect('TEST', 'TEST', 'TST')

conn.close()

 

 

 

위의 예제는 Connection Object를 생성해서 서버에 접속한후 연결을 해제하는 간단한 예제이다

 

Connection Object에는 아래와 같은 메소드들이 있다

 

close

- 접속을 해제한다

commit

- 트랜잭션을 commit 한다

rollback

- 트랜잭션을 roolback 시킨다

cursor

- cursor Object를 생성한다. 이것을 통해서 우리는 DB에 쿼리를 전송할 수 있다

 

자 그럼 이제 cursor Object를 통해서 직접 쿼리를 실행시켜보도록 하자

다음 예제를 보자

간단한 예제라 보면 바로 알수 있을 것이다

 

 

Exam1)

 

import sapdbapi

 

conn = sapdbapi.connect('TEST', 'TEST', 'TST')

 

cursor = conn.cursor()

result = cursor.execute('select * from users')

 

row = result.fetchone()

while row:

____print row

____row = result.fetchone()

 

result.close()

cursor.close()

conn.close()

 

 

Exam2)

 

import sapdbapi

 

conn = sapdbapi.connect('TEST', 'TEST', 'TST')

 

cursor = conn.cursor()

result = cursor.execute('select * from users')

 

row = result.fetchall()

print row

 

result.close()

cursor.close()

conn.close()

 

 

Exam3)

 

import sapdbapi

 

conn = sapdbapi.connect('TEST', 'TEST', 'TST')

 

cursor = conn.cursor()

result = cursor.execute('select * from users')

 

row = result.fetchmany(2)

print row

row = result.fetchmany(2)

print row

 

result.close()

cursor.close()

conn.close()

 

 

cursor Object는 많은 메소드를 가지고 있는데 중요 메소드만 알아보도록 하자

close

- cursor Object를 해제한다

execute

- 쿼리를 실행한다

fetchone

- 쿼리의 결과값 Row 하나를 읽어온다

fetchmany

- 쿼리의 결과값 임의의 수를 읽어온다

fetchall

- 쿼리의 결과값을 모두 읽어온다

 

 

위의 내용정도면 간단한 프로그램 정도는 작성할 수 있을 것이다

Python DB API 2.0에 대해 더 자세히 알고 싶으면 http://www.python.org/topics/database/DatabaseAPI-2.0.html 를 참고하기 바란다

 

※ 위의 예제들을 실행해보면 종료시점에서

Exception sapdbapi.OperationalError: <sapdbapi.OperationalError instance at 0x81598fc> in <bound method Connection.close of <sapdbapi.Connection instance at 0x815204c>> ignored

와 비슷한 예외가 발생할 것이다.

추측하건데 아무래도 conn.close() 메소드 호출후 프로그램이 종료시 다시 Connection의 close 메소드를 호출하는 듯 하다.

해결하는 방법은 그냥 conn.close() 부분을 주석처리해도 될 듯 하다.

[Top]
No.
제목
작성자
작성일
조회
23619결과를 가로로 출력하여 보여주기(Pivot) [2]
이경환
2005-04-22
37830
23534SAP DB용 Python Client
남녀평등
2002-12-04
28007
23533SAPDB + JSP(PHP)를 이용한 간단한 페이징 팁
신정호
2002-12-04
18811
23532SAPDB PYTHON에서 SAPDBAPI를 이용한 접속
남녀평등
2002-12-04
13797
23531SAPDB Precompiler를 이용한 간단한 사용자 관리 예제 프로그램
남녀평등
2002-12-04
12656
23530SAPDB PYTHON Interface 사용기
남녀평등
2002-12-04
10569
23529SAPDB ODBC 사용기
남녀평등
2002-12-04
11942
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.052초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다