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 23534 게시물 읽기
 News | Q&A | Columns | Tutorials | Devel | Files | Links
No. 23534
SAP DB용 Python Client
작성자
남녀평등(linux199)
작성일
2002-12-04 15:03:09
조회수
11,489

SAP DB용 Python Client입니다

기존의 dbmcli를 가지고 여러 쿼리를 사용해 보기에는 불편함이 있어서 mysql, psql 등 처럼 약간 편하게(?) 사용할 수 있도록 readline을 이용해서 만들었습니다.

일단 기본적인 쿼리의 작성은 가능하니 유용하게 쓰시기 바랍니다

 

#!/bin/env python 
# 
# SAP DB Python Client 
# Made by MC Yi (netb@netb.co.kr) 
# 

import os 
import sys 
import string 
import atexit 
import readline 
import getopt 
import sapdb 

def program_end(): 
        print "Exit" 
         
        try: 
                conn.release() 
        except: 
                pass 
         
        try: 
                readline.write_history_file(histfile) 
        except IOError: 
            pass 
             
def do_select(query): 
        try: 
                result = conn.sql(query) 
        except: 
                print "You have an error in your SQL syntax near '" + query  + "'" 
                return 
         
        i = 0 
        strTitle = '' 
        strBar = '' 
        while i < result.columnCount(): 
                strTitle = strTitle + result.columnInfo(i)[0] + '\t' 
                strBar = strBar + '-' * len(result.columnInfo(i)[0]) + '\t' 
                i = i + 1 
         
        print strTitle 
        print strBar 
         
        i = 0 
        for row in result: 
                for col in row: 
                        print col, 
                        print '\t', 
                print 
                 
                i = i + 1         
                 
        print str(i) + ' rows in set\n' 

def do_execute(query): 
        try: 
                conn.sql(query) 
        except: 
                print "You have an error in your SQL syntax near '" + query  + "'" 

def usage(): 
        print 'Usage: sapdb -u user -p password [OPTIONS] database' 
         

if len(sys.argv) <= 1: 
        usage() 
        sys.exit(2) 
         
try: 
        opts, args = getopt.getopt(sys.argv[1:], "hd:u:p:s:", ["help", "db=", "user=", "pass=", "server="]) 
except getopt.GetoptError: 
        usage() 
        sys.exit(2) 

dbname = '' 
dbuser = '' 
dbpass = '' 
dbhost = '' 

for o, a in opts: 
        if o in ("-h", "--help"): 
                usage() 
                sys.exit() 
        if o in ("-d", "--db"): 
                dbname = string.upper(a) 
        if o in ("-u", "--user"): 
                dbuser = string.upper(a) 
        if o in ("-p", "--pass"): 
                dbpass = string.upper(a) 
        if o in ("-s", "--server"): 
                dbhost = a 

if args: 
        dbname = args[0] 

if not dbname or not dbuser or not dbpass: 
        usage() 
        sys.exit() 
         
if not dbhost: 
        dbhost = 'localhost' 

histfile = os.path.join(os.environ['HOME'], '.sapdb_history') 

try: 
        conn = sapdb.connect(dbuser, dbpass, dbname, dbhost) 
except sapdb.SQLError: 
        print 'Unable to connect to database server' 
        sys.exit() 

atexit.register(program_end) 

try: 
    readline.read_history_file(histfile) 
except IOError: 
    pass 
     
allline = '' 
prompt = 'sapdb>' 

while 1: 
        line = string.strip(raw_input(prompt)) 
         
        allline = allline + line + ' ' 
         
        tempcommand = string.upper(allline[:4]) 
        if tempcommand == 'QUIT' or tempcommand == 'EXIT': 
                break 

        if string.find(line, ';') == -1: 
                prompt = '    ->' 
        else: 
                allline = string.strip(string.replace(allline, ';', '')) 
                 
                command = string.upper(string.split(allline, ' ', 1)[0]) 
                if command == 'SELECT': 
                        do_select(allline) 
                else: 
                        do_execute(allline) 
                         
                allline = '' 
                prompt = 'sapdb>' 
[Top]
No.
제목
작성자
작성일
조회
25897[옮김] MySQL DataBase 서버 튜닝 - Connection과 Memory
문태준
2006-09-30
16671
24113[Tip]과연 쿼리의 끝은 어디인가?? [7]
이경환
2005-07-23
30623
23619결과를 가로로 출력하여 보여주기(Pivot) [2]
이경환
2005-04-22
33296
23534SAP DB용 Python Client
남녀평등
2002-12-04
11489
23533SAPDB + JSP(PHP)를 이용한 간단한 페이징 팁
신정호
2002-12-04
15377
23532SAPDB PYTHON에서 SAPDBAPI를 이용한 접속
남녀평등
2002-12-04
11357
23531SAPDB Precompiler를 이용한 간단한 사용자 관리 예제 프로그램
남녀평등
2002-12-04
10460
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.078초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다