List of drivers
Drivers
The list below are PostgreSQL drivers (also referred to as "client libraries") that developers can use to interface with PostgreSQL from various programming languages. The list is alphabetized by programming language, and also indicates if the driver is based on libpq and whether or not it supports the SCRAM-SHA-256 authentication protocol that was added in PostgreSQL 10.
NOTE: The drivers listed below are in various states of development. Some of them have been stable for many years and have been proven in various environments, whereas others are in early development. This listed is strictly informational: it is up to you to select the driver that is best for your environment.
If you would like to add additional drivers to the list, please add them in alphabetical order based on the programming language for the driver.
Open Source
Driver | Language | License | Uses libpq? | Supports SCRAM? |
---|---|---|---|---|
libpq | C | PostgreSQL | Yes | Yes |
ODBC | C | LGPLv2 | Yes | Yes |
libpqxx | C++ | BSD 3-Clause | Yes | Yes |
QPSQL | C++ (Qt) | LGPLv3 | Yes | Yes |
pgfe | C++ | zlib | Yes | Yes |
OZO | C++ | PostgreSQL | Yes | Yes |
taoPQ | C++ | BSL-1.0 | Yes | Yes |
npgsql | C# | PostgreSQL | No | Yes, since 3.2.7 |
Postmodern | Common Lisp | zlib and PostgreSQL | No | Yes, since 1.30 |
crystal-pg | Crystal | BSD 3-Clause | No | Yes, since 0.18.0 |
Postgrex | Elixir | Apache 2 | No | Yes, since 0.14.0 |
emacs-libpq | Emacs Lisp | GPLv3 | Yes | Yes |
epgsql | Erlang | BSD 3-Clause | No | Yes [1] |
pgo | Erlang | Apache 2.0 | No | Yes [2] |
github.com/lib/pq | Go | MIT | No | Yes, since 1.1.0 |
pgx | Go | MIT | No | Yes [3], since 3.4.0 |
go-pg | Go | BSD 2-Clause | No | Yes, since 6.15 |
HDBC | Haskell | BSD 3-Clause | Yes | Yes |
postgresql-simple | Haskell | BSD 3-Clause | Yes | Yes |
JDBC | Java | BSD 2-Clause | No | Yes, since 42.2.0. |
R2DBC | Java | Apache 2.0 | No | Yes |
node-postgres | JavaScript | MIT | Optional | Yes [4], since 7.9.0 |
postgres.js | JavaScript | The Unlicense | No | Yes |
pgmoon | Lua | MIT | No | Yes, since 1.13.0 [5] |
DBD::Pg | Perl | Artistic | Yes | Yes |
php-pgsql | PHP | PHPv3.0.1 | Yes | Yes |
PDO_PGSQL | PHP | PHPv3.0.1 | Yes | Yes |
ext-pq | PHP | BSD 2-Clause | Yes | Yes |
Pomm | PHP | MIT | Yes | Yes |
Psycopg 3 | Python | LGPLv3 | Yes | Yes |
psycopg2 | Python (CPython only) | LGPLv3 | Yes | Yes |
asyncpg | Python | Apache 2 | No | Yes, since 0.19.0 [6] |
pg8000 | Python | BSD 3-Clause | No | Yes |
psycopg2cffi | Python, PyPy | LGPLv3 | Yes | Yes |
RPostgreSQL | R | GPLv2 | Yes | Yes |
ruby-pg | Ruby | BSD 2-Clause | Yes | Yes |
rust-postgres | Rust | MIT | No | Yes [7] |
PostgresClientKit | Swift | Apache 2 | No | Yes [8], since 1.3.0 |
PostgresNIO | Swift | MIT | No | Yes |
Pgtcl | Tcl | BSD 3-Clause | Yes | Yes |
pgtclng | Tcl | PostgreSQL | Yes | Yes |
postgresql-client | TypeScript | MIT | No | Yes |
Proprietary
There is a list of proprietary (and open source) drivers listed out on the PostgreSQL website:
https://www.postgresql.org/download/products/2-drivers-and-interfaces/
The PostgreSQL Global Development Group do not endorse or recommend any products listed in the above URL, and cannot vouch for the quality or reliability of any of them.
Unsupported Drivers
Below is a list of drivers that are no longer maintained.
Driver | Language |
---|---|
CLSQL | Common Lisp |
pgsql | Erlang |
erlang-psql-driver | Erlang |
PgPP | Perl |