当我使用isql进行查询时,我得到以下消息和查询块.
数据库foo中的事务日志几乎已满.您的事务将暂停,直到日志中的空间可用.
当我从Python做同样的事情时:
cursor.execute(sql)
Run Code Online (Sandbox Code Playgroud)
查询阻止,但我想看到此消息.
我试过了:
Sybase.set_debug(sys.stderr)
connection.debug = 1
Run Code Online (Sandbox Code Playgroud)
我正在使用:
编辑:问题是,"如何在python程序中捕获此警告消息?"
好问题,我不确定我能完全回答它。这里有一些想法。
Sybase.py 使用日志记录。确保您正在使用它。为了“阻止”注销,我会这样做:
import logging
logging.basicConfig(level = logging.INFO,
format = "%(asctime)s %(levelname)s [%(filename)s] (%(name)s) %(message)s",
datefmt = "%H:%M:%S", stream = sys.stdout)
log = logging.getLogger('sybase')
log.setLevel(logging.DEBUG)
Run Code Online (Sandbox Code Playgroud)
显然(为什么超出了我的范围??)要使其在 Sybase.py 中工作,您需要设置一个全局变量DEBUG=True(参见第 38 行)
但是,如果我们看一下,def execute我们可以看到(正如您所指出的)它被阻塞了。我们会这样回答你的问题。你不会得到任何东西,因为它阻止了它。那么如何解决这个问题 - 编写一个非阻塞执行方法;)examples/timeout.py 中有一些提示。显然其他人已经遇到了这个问题,但还没有真正解决它。
我知道这可能没有帮助,但我花了 15 分钟寻找 - 我至少应该告诉你我发现了什么..你会认为这execute会给你一些result - 等等,第 707 行结果的值是多少?
while 1:
status, result = self._cmd.ct_results()
if status != CS_SUCCEED:
break
Run Code Online (Sandbox Code Playgroud)
如果 status != CS_SUCCEED (我假设在你的情况下是 True)你能简单地看到“结果”等于什么吗?我想知道他们是否只是未能将结果作为例外提出?
| 归档时间: |
|
| 查看次数: |
676 次 |
| 最近记录: |