Пример #1
0
    def fetchmany(self, *arg):
        """Fetch next row of a query result set.

        arg
            sets the arraysize

        The number of rows to fetch per call is specified by the parameter.
        If it is not given, the cursor's arraysize determines the number of
        rows to be fetched. The method should try to fetch as many rows as
        indicated by the size parameter. If this is not possible due to the
        specified number of rows not being available, fewer rows may be returned.
        Arraysize is retained after each call to fetchmany.

        """
        values = []
        return_tuple = ()

        self.__check_if_open()
        self.__check_for_transaction()

        if (not self.__mimcursor):
            self.__raise_exception(-25014)

        # If arg is provided, arraysize is set
        if (len(arg) > 0):
            self.arraysize = arg[0]

        fetch_length = self.arraysize
        rc_value = mimerapi.mimerFetch(self.__statement)
        fetch_value = rc_value

        while (fetch_value != 100 and fetch_length > 0):
            self.__check_mimerapi_error(fetch_value, self.__statement)
            return_tuple = ()

            # Column number starts a 1
            for cur_column in range(1, self._number_of_columns + 1):
                func_tuple = get_funcs[self._column_type[cur_column - 1]
                                       ](self.__statement, cur_column)
                self.__check_mimerapi_error(func_tuple[0], self.__statement)

                # Conversion from C int to Python boolean
                if (rc_value == 42 and not func_tuple[1] == None):
                    if (func_tuple[1] == 0):
                        return_tuple = return_tuple + (False,)
                    else:
                        return_tuple = return_tuple + (True,)
                else:
                    return_tuple = return_tuple + (func_tuple[1],)

            values.append(return_tuple)
            fetch_length = fetch_length - 1
            if(fetch_length > 0):
                fetch_value = mimerapi.mimerFetch(self.__statement)
        return values
Пример #2
0
    def fetchall(self):
        """
            Fetch all (remaining) row of a query result set.

            The rows are returned as a list of tuples. If no more data is
            available, an empty list is returned. If fetchall is called and
            the previous call to execute did not produce a result set,
            a ProgrammingError is raised.

        """
        self.__check_if_open()
        self.__check_for_transaction()
        if (not self.__mimcursor):
            self.__raise_exception(-25014)
        values = []
        rc_value = mimerapi.mimerFetch(self.__statement)
        fetch_value = rc_value
        while (fetch_value != 100):
            self.__check_mimerapi_error(fetch_value, self.__statement)
            return_tuple = ()
            # Column number starts a 1
            for cur_column in range(1, self._number_of_columns + 1):
                rc_value = mimerapi.mimerColumnType(self.__statement,
                                                    cur_column)
                self.__check_mimerapi_error(rc_value, self.__statement)
                func_tuple = get_funcs[rc_value](self.__statement, cur_column)
                self.__check_mimerapi_error(func_tuple[0], self.__statement)

                # Conversion from C int to Python boolean
                if (rc_value == 42 and not func_tuple[1] == None):
                    if (func_tuple[1] == 0):
                        return_tuple = return_tuple + (False, )
                    else:
                        return_tuple = return_tuple + (True, )
                else:
                    return_tuple = return_tuple + (func_tuple[1], )

            values.append(return_tuple)
            fetch_value = mimerapi.mimerFetch(self.__statement)
        return values
Пример #3
0
    def fetchone(self):
        """
            Fetch next row of a query result set.

            The row is returned as a tuple. If no more data is available,
            None is returned. If fetchone is called and the previous call
            to execute did not produce a result set, a ProgrammingError
            is raised.

        """
        self.__check_if_open()
        self.__check_for_transaction()

        if (not self.__mimcursor):
            self.__raise_exception(-25014)

        rc_value = mimerapi.mimerFetch(self.__statement)
        self.__check_mimerapi_error(rc_value, self.__statement)
        return_tuple = ()

        # Return value of mimerFetch == 100 implies end of result set
        if (rc_value == 100):
            return []

        for cur_column in range(1, self._number_of_columns + 1):
            rc_value = mimerapi.mimerColumnType(self.__statement, cur_column)
            self.__check_mimerapi_error(rc_value, self.__statement)
            func_tuple = get_funcs[rc_value](self.__statement, cur_column)
            self.__check_mimerapi_error(func_tuple[0], self.__statement)

            # Conversion from C int to Python boolean
            if (rc_value == 42 and not func_tuple[1] == None):
                if (func_tuple[1] == 0):
                    return_tuple = return_tuple + (False, )
                else:
                    return_tuple = return_tuple + (True, )
            else:
                return_tuple = return_tuple + (func_tuple[1], )

        return return_tuple