如何使用 pymssql 获取 sql 打印消息
How to get the sql print message using pymssql
我正在 运行 一些查询,打印它们执行时的运行时统计信息。
完成了
print('message')
在 sql 脚本中使用。
我希望在通过 pymssql 调用 procedures/scripts 时看到这些消息。
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
cursor.execute("print('message')")
conn.commit()
以上脚本没有 return 任何内容,而且我找不到任何关于如何让打印显示在控制台输出中的提示。
为了在 pymssql 的控制台中打印一些东西,您不需要将打印放在执行函数中。你可以简单地使用
print("message")
因此您的代码将是
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
print("message")
conn.commit()
我认为没有办法,但您可以重构 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
祝你好运!
找到了一个让我仍然使用 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 打印件,这是我发现的唯一方法。
我正在 运行 一些查询,打印它们执行时的运行时统计信息。
完成了
print('message')
在 sql 脚本中使用。
我希望在通过 pymssql 调用 procedures/scripts 时看到这些消息。
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
cursor.execute("print('message')")
conn.commit()
以上脚本没有 return 任何内容,而且我找不到任何关于如何让打印显示在控制台输出中的提示。
为了在 pymssql 的控制台中打印一些东西,您不需要将打印放在执行函数中。你可以简单地使用
print("message")
因此您的代码将是
conn = pymssql.connect(server, user, password, "tempdb")
cursor = conn.cursor()
print("message")
conn.commit()
我认为没有办法,但您可以重构 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
祝你好运!
找到了一个让我仍然使用 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 打印件,这是我发现的唯一方法。