我正在运行一些查询,从执行中打印运行时统计信息。
它完成了
print('message')
在sql脚本中使用。
我希望在通过pymssql调用过程/脚本时看到这些消息。
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
cursor.execute("print('message')")
conn.commit()
以上脚本不会返回任何内容,但我无法找到有关如何在控制台输出中显示该打印件的任何提示。
答案 0 :(得分:1)
找到一个解决方案,让我仍然使用pymssql并获取打印消息。
pymssql.Connection
实际上在内部使用_mssql.MSSQLConnection
。
这意味着您可以通过访问该内部对象来使用this示例。
connection = pymssql.connect(server='server_address', database='db_name')
connection._conn.set_msghandler(my_msg_handler) # Install our custom handler
其中my_msg_handler与pmssql wiki中的对象类型相同。 访问内部对象并不理想,但如果您不想使用不同的库并且需要获取SQL打印,这是我找到的唯一方法。
答案 1 :(得分:0)
为了在pymssql中将某些东西打印到控制台中,您不需要将print放在execute函数中。你可以简单地使用
print("message")
所以你的代码将是
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
print("message")
conn.commit()
答案 2 :(得分:0)
我不相信有办法,但你可以重构你的SQL。例如:
DECLARE @my_var AS VARCHAR(200)
PRINT 'Setting a variable...'
SET @my_var = 'this'
PRINT 'I am some output'
SELECT * FROM my_table WHERE this = @my_var
可以重构为:
DECLARE @my_var AS VARCHAR(200)
DECLARE @messages AS VARCHAR(MAX)
SET @messages = @messages + 'Setting a variable...'
SET @my_var = 'this'
SET @messages = @messages + 'I am some output'
SELECT @messages, * FROM my_table WHERE this = @my_var
祝你好运!