in Python/sqlmlutils/sqlqueryexecutor.py [0:0]
def execute_query(self, query, params, out_file=None):
df = DataFrame()
output_params = None
try:
if out_file is not None:
with open(out_file,"a") as f:
if params is not None:
# Convert bytearray to hex so user can run as a script
#
if type(params) is bytearray:
params = str('0x' + params.hex())
script = query.replace("?", "%s")
else:
script = query.replace("?", "N'%s'")
f.write(script % params)
else:
f.write(query)
f.write("GO\n")
f.write("-----------------------------")
else:
if params is not None:
self._cursor.execute(query, params)
else:
self._cursor.execute(query)
# Get the first resultset (OutputDataSet)
#
if self._cursor.description is not None:
column_names = [element[0] for element in self._cursor.description]
rows = [tuple(t) for t in self._cursor.fetchall()]
df = DataFrame(rows, columns=column_names)
if STDOUT_COLUMN_NAME in column_names:
self.extract_output(dict(zip(column_names, rows[0])))
# Get output parameters
#
while self._cursor.nextset():
try:
if self._cursor.description is not None:
column_names = [element[0] for element in self._cursor.description]
rows = [tuple(t) for t in self._cursor.fetchall()]
output_params = dict(zip(column_names, rows[0]))
if STDOUT_COLUMN_NAME in column_names:
self.extract_output(output_params)
except pyodbc.ProgrammingError:
continue
except Exception as e:
raise RuntimeError("Error in SQL Execution: " + str(e))
return df, output_params