2014-09-03 34 views
1

我在使用sybase數據庫的python中使用isql命令,isql命令默認情況下返回0作爲返回碼,如果數據庫查詢失敗,我希望它返回一些非如果查詢失敗,則爲零值,這樣我可以知道我的查詢無效。如何在stderr中獲取python中的isql命令的錯誤消息

我看着它在互聯網上,我發現,使用--retserverror選擇使用isql會解決這個目的,但同時使用它

我使用下面的Python代碼我得到一些錯誤: -

ps = subprocess.Popen("""./isql -S %s -U %s -P %s -D %s --retserverror -s "|" -w 10000 <<EOF 
%s 
go 
EOF""" % (server,userid,password,database,Query),stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) 
error = ps.stderr.read() 
out, err = ps.communicate() 
if ps.returncode == 0: 
    final = out 
else: 
     print "Error" 
    final = error 
print final 

輸出: -

Syntax Error in '--retserverror'. 
usage: ./isql [-b] [-e] [-F] [-p] [-n] [-v] [-X] [-Y] [-Q] 
    [-a display_charset] [-A packet_size] [-c cmdend] [-D database] 
    [-E editor [-h header [-H hostname [-i inputfile] 
    [-I interfaces_file] [-J client_charset] [-K keytab_file] 
    [-l login_timeout] [-m errorlevel] [-M labelname labelvalue] 
    [-o outputfile] [-P password] [-R remote_server_principal] 
    [-s col_separator] [-S server_name] [-t timeout] [-U username] 
    [-V [security_options]] [-w column_width] [-z localename] 
    [-Z security_mechanism] 

任何人都可以指導我在這裏?

+0

的數據庫您使用的? – 2014-09-03 06:41:02

+0

--retservererror僅在Sybase 15 ESD#10及更高版本中可用。你運行的是哪個版本的Sybase?你能否包含'isql -v'命令? – 2014-09-03 06:55:06

+0

Sybase CTISQL實用程序/ 12.5.1/P-EBF12368 ESD#7/DRV.12.5.1.3/Linux Intel/Linux 2.4.18-18.7.xsmp i686/BUILD1251-040/OPT/Mon Jan 24 20:01:17 2005您正在檢查的 – 2014-09-03 07:10:43

回答

0

您將需要使用raiseerror函數來設置錯誤編號。自定義錯誤消息可以使用sp_addmessage

查看我的answer here以獲取更多詳細信息,答覆鏈接到Sybase ASE 15.5文檔。

下面是ASE 12.5.1鏈接:

raiserror sp_addmessage

相關問題