TypeCache – The internal cache for database types¶
- class pgdb.TypeCache¶
Added in version 5.0.
The internal TypeCache
of PyGreSQL is not part of the DB-API 2
standard, but is documented here in case you need full control and
understanding of the internal handling of database types.
The TypeCache is essentially a dictionary mapping PostgreSQL internal
type names and type OIDs to DB-API 2 “type codes” (which are also returned
as the type_code field of the Cursor.description
attribute).
These type codes are strings which are equal to the PostgreSQL internal type name, but they are also carrying additional information about the associated PostgreSQL type in the following attributes:
oid – the OID of the type
len – the internal size
type –
'b'
= base,'c'
= composite, …category –
'A'
= Array,'B'
= Boolean, …delim – delimiter to be used when parsing arrays
relid – the table OID for composite types
For details, see the PostgreSQL documentation on pg_type.
In addition to the dictionary methods, the TypeCache
provides
the following methods:
- TypeCache.get_fields(typ)¶
Get the names and types of the fields of composite types
- Parameters:
typ (str or int) – PostgreSQL type name or OID of a composite type
- Returns:
a list of pairs of field names and types
- Return type:
list
- TypeCache.get_typecast(typ)¶
Get the cast function for the given database type
- Parameters:
typ (str) – PostgreSQL type name or type code
- Returns:
the typecast function for the specified type
- Return type:
function or None
- TypeCache.set_typecast(typ, cast)¶
Set a typecast function for the given database type(s)
- Parameters:
typ (str or int) – PostgreSQL type name or type code, or list of such
cast – the typecast function to be set for the specified type(s)
The typecast function must take one string object as argument and return a Python object into which the PostgreSQL type shall be casted. If the function takes another parameter named connection, then the current database connection will also be passed to the typecast function. This may sometimes be necessary to look up certain database settings.
- TypeCache.reset_typecast([typ])¶
Reset the typecasts for the specified (or all) type(s) to their defaults
- Parameters:
typ (str, list or None) – PostgreSQL type name or type code, or list of such, or None to reset all typecast functions
- TypeCache.typecast(value, typ)¶
Cast the given value according to the given database type
- Parameters:
typ (str) – PostgreSQL type name or type code
- Returns:
the casted value
Note
Note that the TypeCache
is always bound to a database connection.
You can also get, set and reset typecast functions on a global level using
the functions pgdb.get_typecast()
, pgdb.set_typecast()
and
pgdb.reset_typecast()
. If you do this, the current database
connections will continue to use their already cached typecast functions
unless call the TypeCache.reset_typecast()
method on the
Connection.type_cache
objects of the running connections.