def _compile(self, query: ClauseElement) -> typing.Tuple[str, list, tuple]: compiled = query.compile(dialect=self._dialect) if not isinstance(query, DDLElement): compiled_params = sorted(compiled.params.items()) mapping = { key: "$" + str(i) for i, (key, _) in enumerate(compiled_params, start=1) } compiled_query = compiled.string % mapping processors = compiled._bind_processors args = [ processors[key](val) if key in processors else val for key, val in compiled_params ] result_map = compiled._result_columns else: compiled_query = compiled.string args = [] result_map = None query_message = compiled_query.replace(" \n", " ").replace("\n", " ") logger.debug("Query: %s Args: %s", query_message, repr(tuple(args)), extra=LOG_EXTRA) return compiled_query, args, result_map
def _compile( self, query: ClauseElement ) -> typing.Tuple[str, list, CompilationContext]: compiled = query.compile(dialect=self._dialect) args = [] for key, raw_val in compiled.construct_params().items(): if key in compiled._bind_processors: val = compiled._bind_processors[key](raw_val) else: val = raw_val args.append(val) execution_context = self._dialect.execution_ctx_cls() execution_context.dialect = self._dialect execution_context.result_column_struct = ( compiled._result_columns, compiled._ordered_columns, compiled._textual_ordered_columns, ) query_message = compiled.string.replace(" \n", " ").replace("\n", " ") logger.debug("Query: %s Args: %s", query_message, repr(tuple(args)), extra=LOG_EXTRA) return compiled.string, args, CompilationContext(execution_context)
def _compile( self, query: ClauseElement ) -> typing.Tuple[str, dict, CompilationContext]: compiled = query.compile(dialect=self._dialect) execution_context = self._dialect.execution_ctx_cls() execution_context.dialect = self._dialect if not isinstance(query, DDLElement): args = compiled.construct_params() for key, val in args.items(): if key in compiled._bind_processors: args[key] = compiled._bind_processors[key](val) execution_context.result_column_struct = ( compiled._result_columns, compiled._ordered_columns, compiled._textual_ordered_columns, ) else: args = {} query_message = compiled.string.replace(" \n", " ").replace("\n", " ") logger.debug("Query: %s Args: %s", query_message, repr(args), extra=LOG_EXTRA) return compiled.string, args, CompilationContext(execution_context)
def _compile(self, query: ClauseElement) -> typing.Tuple[str, list, tuple]: compiled = query.compile(dialect=self.dialect) args = compiled.construct_params() logger.debug(compiled.string, args) for key, val in args.items(): if key in compiled._bind_processors: args[key] = compiled._bind_processors[key](val) return compiled.string, args, compiled._result_columns
def compile_query( clause: ClauseElement, dialect: default.DefaultDialect = RUNTIME_DIALECTS[HuskyQueryRuntime.snowflake], literal_binds: bool = True, ) -> str: """ Compile the query and bind all parameters to it. !!! WARNING !!! Do not execute the returned query """ if clause is not None and isinstance(clause, ClauseElement): return str(clause.compile(compile_kwargs={"literal_binds": literal_binds}, dialect=dialect)) else: return clause
def compile(query: ClauseElement, dialect: Dialect) -> typing.Tuple[str, list]: # query = execute_defaults(query) # default values for Insert/Update compiled = query.compile(dialect=dialect) compiled_params = sorted(compiled.params.items()) mapping = {key: "$" + str(i) for i, (key, _) in enumerate(compiled_params, start=1)} compiled_query = compiled.string % mapping processors = compiled._bind_processors args = [ processors[key](val) if key in processors else val for key, val in compiled_params ] logger.debug(compiled_query) return compiled_query, args
def _compile(self, query: ClauseElement) -> typing.Tuple[str, list, tuple]: compiled = query.compile(dialect=self._dialect) compiled_params = sorted(compiled.params.items()) mapping = { key: "$" + str(i) for i, (key, _) in enumerate(compiled_params, start=1) } compiled_query = compiled.string % mapping processors = compiled._bind_processors args = [ processors[key](val) if key in processors else val for key, val in compiled_params ] logger.debug("Query: %s\nArgs: %s", compiled_query, args) return compiled_query, args, compiled._result_columns
def _compile( self, query: ClauseElement ) -> typing.Tuple[str, dict, CompilationContext]: compiled = query.compile(dialect=self._dialect) args = compiled.construct_params() for key, val in args.items(): if key in compiled._bind_processors: args[key] = compiled._bind_processors[key](val) execution_context = self._dialect.execution_ctx_cls() execution_context.dialect = self._dialect execution_context.result_column_struct = ( compiled._result_columns, compiled._ordered_columns, compiled._textual_ordered_columns, ) logger.debug("Query: %s\nArgs: %s", compiled.string, args) return compiled.string, args, CompilationContext(execution_context)
def get_compiled_expression(statement: ClauseElement, bind: Connectable) -> str: """Return the statement in a form where any placeholders have been filled in.""" return str(statement.compile(bind, compile_kwargs={"literal_binds": True}))
def _compile(self, query: ClauseElement) -> typing.Tuple[str, list, tuple]: compiled = query.compile(dialect=self.dialect) args = compiled.construct_params() logger.debug(compiled.string, args) return compiled.string, args, compiled._result_columns