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]
任何人都可以指導我在這裏?
的數據庫您使用的? – 2014-09-03 06:41:02
--retservererror僅在Sybase 15 ESD#10及更高版本中可用。你運行的是哪個版本的Sybase?你能否包含'isql -v'命令? – 2014-09-03 06:55:06
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