Type MappingΒΆ
The following table shows the mapping between Python types and PostgreSQL types, and vice versa.
If pg8000 doesn’t recognize a type that it receives from PostgreSQL, it will
return it as a str
type. This is how pg8000 handles PostgreSQL enum
and
XML types.
Python Type | PostgreSQL Type | Notes |
---|---|---|
bool |
bool | |
int |
int4 | |
long |
numeric | Python 2 only. |
str |
text (Python 3) bytea (Python 2) | |
unicode |
text | Python 2 only. |
float |
float8 | |
decimal.Decimal |
numeric | |
pg8000.Bytea |
bytea | Python 2 only. |
bytes |
bytea | Python 3 only. |
datetime.datetime
(wo/ tzinfo) |
timestamp without time zone | datetime.datetime.max
maps to infinity , and
datetime.datetime.min
maps to -infinity . |
datetime.datetime
(w/ tzinfo) |
timestamp with time zone | datetime.datetime.max
maps to infinity , and
datetime.datetime.min
maps to -infinity .
The max and min datetimes
have a UTC timezone. |
datetime.date |
date | datetime.date.max
maps to infinity , and
datetime.date.min
maps to -infinity . |
datetime.time |
time without time zone | |
datetime.timedelta
pg8000.Interval |
interval | datetime.timedelta is used unless the interval has months, in which case pg8000.Interval is used |
None | NULL | |
uuid.UUID |
uuid | |
ipaddress.IPv4Address |
inet | Python 3.3 onwards |
ipaddress.IPv6Address |
inet | Python 3.3 onwards |
ipaddress.IPv4Network |
inet | Python 3.3 onwards |
ipaddress.IPv6Network |
inet | Python 3.3 onwards |
int |
xid | |
list of int |
INT4[] | |
list of float |
FLOAT8[] | |
list of bool |
BOOL[] | |
list of str |
TEXT[] | |
list of unicode |
TEXT[] | Python 2 only. |
list of int |
int2vector | Only from PostgreSQL to Python |
JSON | json, jsonb | JSON string as an SQL parameter. Results returned as de-serialized JSON. |