如何在Python中获取isql命令的stderr错误信息
我在用Python的isql命令操作Sybase数据库。默认情况下,如果数据库查询失败,isql命令会返回零作为返回码。我希望在查询失败时返回一个非零的值,这样我就能知道我的查询是无效的。
我在网上查了一下,发现使用--retserverror选项可以解决这个问题,但在使用时我遇到了一些错误。
我正在使用以下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]
有没有人能帮我一下?
1 个回答
0
你可以使用 raiseerror
函数来设置一个错误编号。你还可以通过 sp_addmessage
添加自定义的错误信息。
想了解更多细节,可以查看我的 回答,里面有链接到 Sybase ASE 15.5 的文档。
以下是 ASE 12.5.1 的相关链接: