Ejemplo n.º 1
0
    def _build_row(self):
        row_num = self._rownumber

        # Create the row
        if self.row_factory:
            row = self.row_factory(self)
            is_tuple = False
        else:
            row = [None] * self._nfields
            is_tuple = True

        # Fill it
        n = self._nfields
        for i in xrange(n):
            if libpq.PQgetisnull(self._pgres, row_num, i):
                row[i] = None
            else:
                fast_parser = self._fast_parsers[i]
                if fast_parser:
                    row[i] = fast_parser(self._pgres, row_num, i)
                else:
                    length = libpq.PQgetlength(self._pgres, row_num, i)
                    val = ffi.buffer(libpq.PQgetvalue(
                        self._pgres, row_num, i), length)[:]
                    row[i] = typecasts.typecast(
                            self._casts[i], val, length, self)

        self._rownumber += 1

        if is_tuple:
            return tuple(row)
        return row
Ejemplo n.º 2
0
    def _build_row(self):
        row_num = self._rownumber

        # Create the row
        if self.row_factory:
            row = self.row_factory(self)
            is_tuple = False
        else:
            row = [None] * self._nfields
            is_tuple = True

        # Fill it
        n = self._nfields
        for i in xrange(n):
            if libpq.PQgetisnull(self._pgres, row_num, i):
                row[i] = None
            else:
                fast_parser = self._fast_parsers[i]
                if fast_parser:
                    row[i] = fast_parser(self._pgres, row_num, i)
                else:
                    length = libpq.PQgetlength(self._pgres, row_num, i)
                    val = ffi.buffer(libpq.PQgetvalue(self._pgres, row_num, i),
                                     length)[:]
                    row[i] = typecasts.typecast(self._casts[i], val, length,
                                                self)

        self._rownumber += 1

        if is_tuple:
            return tuple(row)
        return row
Ejemplo n.º 3
0
    def _build_row(self, row_num):

        # Create the row
        if self.row_factory:
            row = self.row_factory(self)
            is_tuple = False
        else:
            row = [None] * self._nfields
            is_tuple = True

        # Fill it
        n = self._nfields
        for i in xrange(n):

            # PQgetvalue will return an empty string for null values,
            # so check with PQgetisnull if the value is really null
            length = libpq.PQgetlength(self._pgres, row_num, i)
            val = ffi.buffer(libpq.PQgetvalue(self._pgres, row_num, i),
                    length)[:]
            if not val and libpq.PQgetisnull(self._pgres, row_num, i):
                val = None
            else:
                caster = self._casts[i]
                val = typecasts.typecast(caster, val, length, self)
            row[i] = val

        if is_tuple:
            return tuple(row)
        return row