来自pyodbc的sql print语句

时间:2012-12-13 02:12:06

标签: sql-server tsql pyodbc python-db-api

如何从sql_query获得输出?

import pyodbc

sql_query = "print 'Hello World'"

conn = pyodbc.connect("DRIVER={SQL Server};
SERVER=myserver;
DATABASE=mydatabase;
UID=myusername;
PWD=mypassword")

cur = conn.cursor()

cur.execute(sql_query)
cur.commit()

for row in cursor.fetchall():
    print row

到目前为止,我认为SQL打印是带外来自通常的结构化响应?

http://www.easysoft.com/developer/languages/perl/sql_server_unix_tutorial.html#print_statement_status_messages有类似于我在Perl中尝试做的事情。

我能看到的最接近的是可选的: http://www.python.org/dev/peps/pep-0249/#cursor-messages所以我猜它还没有实现?

2 个答案:

答案 0 :(得分:0)

在PRINT上使用RAISERROR。与NOWAIT一起使用可立即获得输出。我不知道如何在python中处理这个问题,但是在ADO.NET中你可以在SqlConnection上使用InfoMessage事件。也许在Python中有类似的东西。

答案 1 :(得分:0)

当运行查询PRINT'Hello World'时,输出将作为控制台输出(字符串)返回,而fetchall正在查询查询中的结果集(对象)。 RAISERROR是一个错误条件,可以停止该过程。我不是说这不是一个解决方案,但也许你只想打印一些反馈而不会产生错误条件。

我认为你可以通过改变

来达到你想要的结果

[打印'Hello World']到[SELECT'Hello World']

我认为这会在结果集中创建一行数据,其中包含您想要的文本,这些数据应显示在fetchall中,并查看是否获得了您期望的结果。

希望有助于提供您可以尝试的替代方案!