def execute_query()

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