pyspark 使用输入和输出参数调用Synapse存储过程并捕获输出结果

llew8vvj  于 2023-05-16  发布在  Spark
关注(0)|答案(1)|浏览(147)

以下代码返回true或false,但不是存储过程的输出

driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
connection = driver_manager.getConnection(mssql_url, mssql_user, mssql_pass)
connection.prepareCall("EXEC sys.sp_tables").execute()
connection.close()
cngwdvgl

cngwdvgl1#

你可以尝试下面的代码,它给予你的每一行表在数组中。

driver_manager = spark._sc._gateway.jvm.java.sql.DriverManager
connection = driver_manager.getConnection(mssql_url, mssql_user, mssql_pass)
tst = connection.prepareCall("EXEC sys.sp_tables")
tst.execute()
results = tst.getResultSet()
column_count = results.getMetaData().getColumnCount()
output_arrays = []

while results.next():
    row_array = []
    for i in  range(1, column_count + 1):
        column_data = results.getString(i)
        row_array.append(column_data)
    output_arrays.append(row_array)

output_arrays

您将得到如下结果。

[['master', 'dbo', 'MSreplication_options', 'TABLE', None],
 ['master', 'dbo', 'spt_fallback_db', 'TABLE', None], 
 ['master', 'dbo', 'spt_fallback_dev', 'TABLE', None], 
 ['master', 'dbo', 'spt_fallback_usg', 'TABLE', None], 
 ['master', 'dbo', 'spt_monitor', 'TABLE', None], 
 ['master', 'sys', 'trace_xe_action_map', 'TABLE', None],
 ['master', 'sys', 'trace_xe_event_map', 'TABLE', None], 
 ['master', 'dbo', 'spt_values', 'VIEW', None],
 ['master', 'INFORMATION_SCHEMA', 'CHECK_CONSTRAINTS', 'VIEW', None]

输出:

相关问题