コード例 #1
0
    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
コード例 #2
0
    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)
コード例 #3
0
    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)
コード例 #4
0
 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
コード例 #5
0
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
コード例 #6
0
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
コード例 #7
0
    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
コード例 #8
0
ファイル: mysql.py プロジェクト: xuhengpw/databases
    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)
コード例 #9
0
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}))
コード例 #10
0
ファイル: mysql.py プロジェクト: vpistis/starlette
 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