예제 #1
0
 async def fetch_one(self, query: ClauseElement) -> typing.Optional[typing.Mapping]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     cursor = await self._connection.cursor()
     try:
         await cursor.execute(query, args)
         row = await cursor.fetchone()
         if row is None:
             return None
         metadata = ResultMetaData(context, cursor.description)
         return RowProxy(metadata, row, metadata._processors, metadata._keymap)
     except psycopg2.InterfaceError as error:
         raise exceptions.InterfaceError(str(query), None, error) from error
     except psycopg2.DataError as error:
         raise exceptions.DataError(str(query), None, error) from error
     except psycopg2.OperationalError as error:
         raise exceptions.OperationalError(str(query), None, error) from error
     except psycopg2.IntegrityError as error:
         raise exceptions.IntegrityError(str(query), None, error) from error
     except psycopg2.InternalError as error:
         raise exceptions.InternalError(str(query), None, error) from error
     except psycopg2.ProgrammingError as error:
         raise exceptions.ProgrammingError(str(query), None, error) from error
     except psycopg2.NotSupportedError as error:
         raise exceptions.NotSupportedError(str(query), None, error) from error
     except psycopg2.DatabaseError as error:
         raise exceptions.DatabaseError(str(query), None, error) from error
     finally:
         cursor.close()
예제 #2
0
 async def iterate(
     self, query: ClauseElement
 ) -> typing.AsyncGenerator[typing.Any, None]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     cursor = await self._connection.cursor()
     try:
         await cursor.execute(query, args)
         metadata = ResultMetaData(context, cursor.description)
         async for row in cursor:
             yield RowProxy(metadata, row, metadata._processors, metadata._keymap)
     except psycopg2.InterfaceError as error:
         raise exceptions.InterfaceError(str(query), None, error) from error
     except psycopg2.DataError as error:
         raise exceptions.DataError(str(query), None, error) from error
     except psycopg2.OperationalError as error:
         raise exceptions.OperationalError(str(query), None, error) from error
     except psycopg2.IntegrityError as error:
         raise exceptions.IntegrityError(str(query), None, error) from error
     except psycopg2.InternalError as error:
         raise exceptions.InternalError(str(query), None, error) from error
     except psycopg2.ProgrammingError as error:
         raise exceptions.ProgrammingError(str(query), None, error) from error
     except psycopg2.NotSupportedError as error:
         raise exceptions.NotSupportedError(str(query), None, error) from error
     except psycopg2.DatabaseError as error:
         raise exceptions.DatabaseError(str(query), None, error) from error
     finally:
         cursor.close()
예제 #3
0
    async def fetch_all(self,
                        query: ClauseElement) -> typing.List[typing.Mapping]:
        assert self._connection is not None, "Connection is not acquired"
        query, args, context = self._compile(query)

        try:
            async with self._connection.execute(query, args) as cursor:
                rows = await cursor.fetchall()
                metadata = ResultMetaData(context, cursor.description)
                return [
                    RowProxy(metadata, row, metadata._processors,
                             metadata._keymap) for row in rows
                ]
        except sqlite3.InterfaceError as error:
            raise exceptions.InterfaceError(str(query), None, error) from error
        except sqlite3.DataError as error:
            raise exceptions.DataError(str(query), None, error) from error
        except sqlite3.OperationalError as error:
            raise exceptions.OperationalError(str(query), None,
                                              error) from error
        except sqlite3.IntegrityError as error:
            raise exceptions.IntegrityError(str(query), None, error) from error
        except sqlite3.InternalError as error:
            raise exceptions.InternalError(str(query), None, error) from error
        except sqlite3.ProgrammingError as error:
            raise exceptions.ProgrammingError(str(query), None,
                                              error) from error
        except sqlite3.NotSupportedError as error:
            raise exceptions.NotSupportedError(str(query), None,
                                               error) from error
        except sqlite3.DatabaseError as error:
            raise exceptions.DatabaseError(str(query), None, error) from error
예제 #4
0
 def _load(self):
     if self.__delegator is not None:
         return
     if not self.__cursor.description:
         raise Exception(
             "Cursor must be loaded before call TrinoResultMetaData")
     self.__delegator = ResultMetaData(self.__parent,
                                       self.__cursor.description)
예제 #5
0
    async def fetch_one(self, query: ClauseElement) -> RowProxy:
        assert self._connection is not None, "Connection is not acquired"
        query, args, context = self._compile(query)

        async with self._connection.execute(query, args) as cursor:
            row = await cursor.fetchone()
            metadata = ResultMetaData(context, cursor.description)
            return RowProxy(metadata, row, metadata._processors, metadata._keymap)
예제 #6
0
 async def iterate(
     self, query: ClauseElement
 ) -> typing.AsyncGenerator[typing.Any, None]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     async with self._connection.execute(query, args) as cursor:
         metadata = ResultMetaData(context, cursor.description)
         async for row in cursor:
             yield RowProxy(metadata, row, metadata._processors, metadata._keymap)
예제 #7
0
    async def fetch_all(self, query: ClauseElement) -> typing.List[typing.Mapping]:
        assert self._connection is not None, "Connection is not acquired"
        query, args, context = self._compile(query)

        async with self._connection.execute(query, args) as cursor:
            rows = await cursor.fetchall()
            metadata = ResultMetaData(context, cursor.description)
            return [
                RowProxy(metadata, row, metadata._processors, metadata._keymap)
                for row in rows
            ]
예제 #8
0
 async def fetch_one(self, query: ClauseElement) -> typing.Optional[typing.Mapping]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     cursor = await self._connection.cursor()
     try:
         await cursor.execute(query, args)
         row = await cursor.fetchone()
         if row is None:
             return None
         metadata = ResultMetaData(context, cursor.description)
         return RowProxy(metadata, row, metadata._processors, metadata._keymap)
     finally:
         await cursor.close()
예제 #9
0
 async def fetch_one(self, query: ClauseElement) -> Optional[RowProxy]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     async with await self._connection.cursor() as cursor:
         if args:
             await cursor.execute(query, *args)
         else:
             await cursor.execute(query)
         row = await cursor.fetchone()
         if row is None:
             return None
         metadata = ResultMetaData(context, cursor.description)
         return RowProxy(metadata, row, metadata._processors,
                         metadata._keymap)
예제 #10
0
 async def fetch_all(self, query: Union[ClauseElement,
                                        str]) -> List[RowProxy]:
     assert self._connection is not None, "Connection is not acquired"
     query, args, context = self._compile(query)
     async with self._connection.cursor() as cursor:
         if args:
             await cursor.execute(query, *args)
         else:
             await cursor.execute(query)
         rows = await cursor.fetchall()
         metadata: ResultMetaData = ResultMetaData(context,
                                                   cursor.description)
         return [
             RowProxy(metadata, row, metadata._processors, metadata._keymap)
             for row in rows
         ]