示例#1
0
    def get_result_proxy(self):
        """
        Get results from a SQL Query
        :returns: the result from the query
        """
        if self._callproc_result and self._out_parameters:
            if SA_Version < [0, 8]:
                result = base.ResultProxy(self)
            else:
                result = _result.ResultProxy(self)
            result.out_parameters = {}

            for bindparam in self.compiled.binds.values():
                if bindparam.isoutparam:
                    name = self.compiled.bind_names[bindparam]
                    result.out_parameters[name] = self._callproc_result[
                        self.compiled.positiontup.index(name)]

            return result
        else:
            if SA_Version < [0, 8]:
                result = base.ResultProxy(self)
            else:
                result = _result.ResultProxy(self)
            return result
示例#2
0
    def get_result_proxy(self):
        if hasattr(self, 'out_parameters'):
            if self.compiled_parameters is not None and len(
                    self.compiled_parameters) == 1:
                for bind, name in self.compiled.bind_names.iteritems():
                    if name in self.out_parameters:
                        type = bind.type
                        result_processor = type.dialect_impl(
                            self.dialect).result_processor(self.dialect)
                        if result_processor is not None:
                            self.out_parameters[name] = result_processor(
                                self.out_parameters[name].getvalue())
                        else:
                            self.out_parameters[name] = self.out_parameters[
                                name].getvalue()
            else:
                for k in self.out_parameters:
                    self.out_parameters[k] = self.out_parameters[k].getvalue()

        if self.cursor.description is not None:
            for column in self.cursor.description:
                type_code = column[1]
                if type_code in self.dialect.ORACLE_BINARY_TYPES:
                    return base.BufferedColumnResultProxy(self)

        return base.ResultProxy(self)
示例#3
0
    def get_result_proxy(self):
        if hasattr(self.compiled, 'returning_parameters'):
            rrs = None
            try:
                try:
                    rrs = self.statement.__statement__.getReturnResultSet()
                    next(rrs)
                except SQLException as sqle:
                    msg = '%s [SQLCode: %d]' % (sqle.getMessage(),
                                                sqle.getErrorCode())
                    if sqle.getSQLState() is not None:
                        msg += ' [SQLState: %s]' % sqle.getSQLState()
                    raise zxJDBC.Error(msg)
                else:
                    row = tuple(
                        self.cursor.datahandler.getPyObject(
                            rrs, index, dbtype) for index, dbtype in
                        self.compiled.returning_parameters)
                    return ReturningResultProxy(self, row)
            finally:
                if rrs is not None:
                    try:
                        rrs.close()
                    except SQLException:
                        pass
                self.statement.close()

        return base.ResultProxy(self)
    def get_result_proxy(self):
        if logger.isEnabledFor(logging.INFO):
            self._log_notices(self.cursor)

        if self.__is_server_side:
            return base.BufferedRowResultProxy(self)
        else:
            return base.ResultProxy(self)
示例#5
0
 def get_result_proxy(self):
     rp = base.ResultProxy(self)
     if rp._metadata:
         # adjust for dotted column names.  SQLite
         # in the case of UNION may store col names as
         # "tablename.colname"
         # in cursor.description
         for colname in rp._metadata.keys:
             if "." in colname:
                 trunc_col = colname.split(".")[1]
                 rp._metadata._set_keymap_synonym(trunc_col, colname)
     return rp
示例#6
0
    def get_result_proxy(self):
        if self._callproc_result and self._out_parameters:
            if SA_Version < [0, 8]:
                result = base.ResultProxy(self)
            else:
                result = _result.ResultProxy(self)
            result.out_parameters = {}

            for bindparam in list(self.compiled.binds.values()):
                if bindparam.isoutparam:
                    name = self.compiled.bind_names[bindparam]
                    result.out_parameters[name] = self._callproc_result[
                        self.compiled.positiontup.index(name)
                    ]

            return result
        else:
            if SA_Version < [0, 8]:
                result = base.ResultProxy(self)
            else:
                result = _result.ResultProxy(self)
            return result
示例#7
0
    def get_result_proxy(self):
        if hasattr(self, 'out_parameters'):
            if self.compiled_parameters is not None and len(self.compiled_parameters) == 1:
                 for k in self.out_parameters:
                     type = self.compiled_parameters[0].get_type(k)
                     self.out_parameters[k] = type.dialect_impl(self.dialect).result_processor(self.dialect)(self.out_parameters[k].getvalue())
            else:
                 for k in self.out_parameters:
                     self.out_parameters[k] = self.out_parameters[k].getvalue()

        if self.cursor.description is not None:
            for column in self.cursor.description:
                type_code = column[1]
                if type_code in self.dialect.ORACLE_BINARY_TYPES:
                    return base.BufferedColumnResultProxy(self)
        
        return base.ResultProxy(self)
示例#8
0
    def get_result_proxy(self):
        if hasattr(self, 'out_parameters') and self.compiled.returning:
            returning_params = dict(
                (k, v.getvalue())
                for k, v in list(self.out_parameters.items()))
            return ReturningResultProxy(self, returning_params)

        result = None
        if self.cursor.description is not None:
            for column in self.cursor.description:
                type_code = column[1]
                if type_code in self.dialect._cx_oracle_binary_types:
                    result = base.BufferedColumnResultProxy(self)

        if result is None:
            result = base.ResultProxy(self)

        if hasattr(self, 'out_parameters'):
            if self.compiled_parameters is not None and \
                    len(self.compiled_parameters) == 1:
                result.out_parameters = out_parameters = {}

                for bind, name in list(self.compiled.bind_names.items()):
                    if name in self.out_parameters:
                        type = bind.type
                        impl_type = type.dialect_impl(self.dialect)
                        dbapi_type = impl_type.get_dbapi_type(
                            self.dialect.dbapi)
                        result_processor = impl_type.\
                                                    result_processor(self.dialect,
                                                    dbapi_type)
                        if result_processor is not None:
                            out_parameters[name] = \
                                    result_processor(self.out_parameters[name].getvalue())
                        else:
                            out_parameters[name] = self.out_parameters[
                                name].getvalue()
            else:
                result.out_parameters = dict(
                    (k, v.getvalue())
                    for k, v in list(self.out_parameters.items()))

        return result
示例#9
0
文件: default.py 项目: pguenth/xsbs
 def get_result_proxy(self):
     return base.ResultProxy(self)
示例#10
0
                    raise zxJDBC.Error(msg)
                else:
                    row = tuple(
                        self.cursor.datahandler.getPyObject(
                            rrs, index, dbtype) for index, dbtype in
                        self.compiled.returning_parameters)
                    return ReturningResultProxy(self, row)
            finally:
                if rrs is not None:
                    try:
                        rrs.close()
                    except SQLException:
                        pass
                self.statement.close()

        return base.ResultProxy(self)

    def create_cursor(self):
        cursor = self._dbapi_connection.cursor()
        cursor.datahandler = self.dialect.DataHandler(cursor.datahandler)
        return cursor


class ReturningResultProxy(base.FullyBufferedResultProxy):
    """ResultProxy backed by the RETURNING ResultSet results."""
    def __init__(self, context, returning_row):
        self._returning_row = returning_row
        super(ReturningResultProxy, self).__init__(context)

    def _cursor_description(self):
        ret = []
示例#11
0
 def get_result_proxy(self):
     if self._result_proxy:
         return self._result_proxy
     else:
         return base.ResultProxy(self)
示例#12
0
 def get_result_proxy(self):
     if self.cursor.description is not None:
         for column in self.cursor.description:
             if column[1] in ('Long Binary', 'Long', 'Long Unicode'):
                 return MaxDBResultProxy(self)
     return engine_base.ResultProxy(self)
示例#13
0
 def get_result_proxy(self):
     if self.__is_server_side:
         return base.BufferedRowResultProxy(self)
     else:
         return base.ResultProxy(self)