# Backend Types supported

This table give a comprehensive list of the SQL Types that are expected to be supported by the database backends. If the type is not supported then the backend will have to emulate the behavior described here.

The columns are in the following order:

- The SQL type [1] representing the field

- The python type expected on input

- The python type received on output

[1]

Corresponding to the SQL 92 standard or to a PostgreSQL type.

`None` will represent the `NULL` value and vice versa, it can be used as input or output for any SQL type.

SQL Type | Python input type | Python output type
--- | --- | ---
`BOOL` | bool | bool
`INTEGER` | int | int
`BIGINT` | int / long [2] | int / long [2]
`FLOAT` | float / int / long [2] | float
`NUMERIC` | decimal.Decimal | decimal.Decimal
`VARCHAR` / `VARCHAR(length)` | str / unicode [3] | str / unicode [3]
`TEXT` | str / unicode [3] | str / unicode [3]
`TIMESTAMP` | datetime.datetime | datetime.datetime
`DATETIME` | datetime.datetime without microseconds [4] | datetime.datetime without microseconds [4]
`DATE` | datetime.date | datetime.date
`TIME` | datetime.time | datetime.time
`INTERVAL` | datetime.timedelta | datetime.timedelta
`BLOB` | bytes | bytes

[2] (1,2,3)

in python 2 integers over sys.maxint are represented by the `long` type

[3] (1,2,3,4)

str when using python 3 ; unicode when using python 2

[4] (1,2)

Datetime objects are not localized to any timezone