【发布时间】:2016-07-14 07:28:49
【问题描述】:
我在使用 Sybase ASE 15.7 数据库和 sybpydb 库在 Python (2.7.11) 中开发应用程序时遇到了一个非常奇怪的行为。
从数据库中选择数据时,总是会抛出一个错误 5701,这不是错误,而只是客户端已登录或更改数据库的信息性消息。
这应该被客户忽略,它大部分时间都可以正常工作,但有时不能。
有没有人遇到过这个问题并知道解决方法? 我不想停止处理异常。
下面的代码说明了问题,前两个查询正常运行,但最后一个不起作用,我检查了查询,是的,它返回一个结果集。
uname = 'username'
pwd = 'password'
server = 'server'
conn = sybpydb.connect(user=uname, password=pwd, servername=server)
cur = conn.cursor()
try:
sql = 'select * from database..table1'
cur.execute(sql)
print 'Execute for table1'
print cur.connection.errors()
row = cur.fetchone()
print "Query Returned %d row(s)" % cur.rowcount
print row
except sybpydb.Error:
print cur.connection.errors()
finally:
cur.close()
conn.close()
conn = sybpydb.connect(user=uname, password=pwd, servername=server)
cur = conn.cursor()
parameter1 = 'DSE'
try:
sql = 'select * from database..table2 where column1 = ?'
cur.execute(sql, [parameter1])
print 'Execute for table2'
print cur.connection.errors()
row = cur.fetchone()
print "Query Returned %d row(s)" % cur.rowcount
print row
except sybpydb.Error:
print cur.connection.errors()
finally:
cur.close()
conn.close()
parameter1 = 1
parameter2 = 1
conn = sybpydb.connect(user=uname, password=pwd, servername=server)
cur = conn.cursor()
try:
sql = 'select * from database..table3 where column1 = ? and column2 ?'
cur.execute(sql, [parameter1, parameter2])
print 'Execute for table3'
print cur.connection.errors()
row = cur.fetchone()
print "Query Returned %d row(s)" % cur.rowcount
print row
except sybpydb.Error:
print cur.connection.errors()
finally:
cur.close()
conn.close()
这三个对数据库的调用导致了这个。
为 table1 执行
[DatabaseError("Server message: number(5701) severity(10) state(2) line(0)\n\tChanged database context to 'master'.\n\n", 5701)]
查询返回 -1 行
(查询 1 的结果集)
为 table2 执行
[DatabaseError("Server message: number(5701) severity(10) state(2) line(0)\n\tChanged database context to 'master'.\n\n", 5701)]
查询返回 -1 行
(查询2的结果集)
[DatabaseError("Server message: number(5701) severity(10) state(2) line(0)\n\tChanged database context to 'master'.\n\n", 5701)]
【问题讨论】: