Listed in editorial order, grouped by use case. Click a column to re-sort the whole list.
Press / to search. Tap a tag to filter. Click any row for details.
Search and filter
Results
| Row number | Tags | |||||
|---|---|---|---|---|---|---|
MySQL 2 projects |
||||||
| 1 | pymysql MySQL | 72,866,806 | 7,852 | MySQL Database Drivers Database & Storage | → | |
|
A pure-Python MySQL and MariaDB client library, based on PEP 249.
|
||||||
| 2 | mysqlclient MySQL | 15,846,846 | 2,537 | MySQL Database Drivers Database & Storage | → | |
|
MySQL and MariaDB connector (MySQLdb1 fork).
|
||||||
PostgreSQL 2 projects |
||||||
| 3 | psycopg PostgreSQL | 127,387,768 | 2,504 | PostgreSQL Database Drivers Database & Storage | → | |
|
A PostgreSQL adapter for Python, the successor to psycopg2.
|
||||||
| 4 | asyncpg PostgreSQL | 103,502,581 | 8,097 | PostgreSQL Database Drivers Database & Storage | → | |
|
A fast PostgreSQL Database Client Library for Python/asyncio.
|
||||||
SQLite 2 projects |
||||||
| 5 | sqlite3 SQLite | Stdlib | 77,391 | SQLite Database Drivers Database & Storage Stdlib | → | |
|
(Python standard library) SQLite interface compliant with DB-API 2.0.
|
||||||
| 6 | sqlite-utils SQLite | 878,452 | 2,177 | SQLite Database Drivers Database & Storage | → | |
|
Python CLI utility and library for manipulating SQLite databases.
|
||||||
ClickHouse 2 projects |
||||||
| 7 | clickhouse-connect ClickHouse | 26,734,617 | 524 | ClickHouse Database Drivers Database & Storage | → | |
|
The official ClickHouse client, with SQLAlchemy and Superset connectors.
|
||||||
| 8 | clickhouse-driver ClickHouse | 10,601,068 | 1,305 | ClickHouse Database Drivers Database & Storage | → | |
|
Python driver with native interface for ClickHouse.
|
||||||
Other Relational Databases 3 projects |
||||||
| 9 | pyodbc Other Relational Databases | 26,684,919 | 3,086 | Other Relational Databases Database Drivers Database & Storage | → | |
|
An ODBC bridge for connecting to SQL Server and any other ODBC-accessible database.
|
||||||
| 10 | oracledb Other Relational Databases | 17,636,506 | 454 | Other Relational Databases Database Drivers Database & Storage | → | |
|
The official Python driver for Oracle Database, successor to cx_Oracle.
|
||||||
| 11 | mssql-python Other Relational Databases | 2,718,798 | 476 | Other Relational Databases Database Drivers Database & Storage | → | |
|
Official Microsoft driver for SQL Server and Azure SQL, built on ODBC for high performance.
|
||||||
NoSQL Databases 3 projects |
||||||
| 12 | redis NoSQL Databases | 195,454,499 | 13,646 | NoSQL Databases Database Drivers Database & Storage | → | |
|
The Python client for Redis.
|
||||||
| 13 | pymongo NoSQL Databases | 63,817,002 | 4,357 | NoSQL Databases Database Drivers Database & Storage | → | |
|
The official Python client for MongoDB.
|
||||||
| 14 | cassandra-driver NoSQL Databases | 3,629,165 | 1,429 | NoSQL Databases Database Drivers Database & Storage | → | |
|
The Python Driver for Apache Cassandra.
|
||||||
No projects match your search or filter.
Try a broader term, or .
Database Drivers guide
Psycopg is the PostgreSQL driver Django recommends. One design serves sync and async code: AsyncConnection and AsyncCursor mirror the sync classes, so you mostly add await. Open each connection in a with block. It commits when the block ends, rolls back on an exception, and closes the connection either way.
asyncpg is built for asyncio only, and skips DB-API on purpose to fit PostgreSQL better. In a server, create a pool with asyncpg.create_pool() at startup, then take a connection per request with async with pool.acquire().
Django calls mysqlclient the recommended choice for MySQL, and ships its own adapter for it. It's a native driver built against MySQL's client library. Where you can't install that library and its headers, use PyMySQL, which SQLAlchemy calls a pure Python port of MySQLdb that targets full compatibility. The licenses differ too: mysqlclient is GPL, and PyMySQL is MIT.
sqlite3 comes with Python, and SQLite needs no server. Use the connection as a context manager: it commits when the block succeeds and rolls back when it raises.
sqlite-utils sits on top of sqlite3 to create and fill databases, not to be a full ORM. Pass insert_all() a list of dicts, and it creates the table and columns for you. Its command-line tool pipes JSON or CSV straight into a new database file.
clickhouse-connect is ClickHouse's official client and talks HTTP, so it works through load balancers, proxies, and enterprise network controls. clickhouse-driver uses the native TCP protocol instead, which its docs say is more configurable and sends compact binary data.
pyodbc reaches any database through that database's ODBC driver, plus one driver manager for all of them. Windows has one built in; on macOS and Unix, you install one first. For SQL Server and Azure SQL, Microsoft's own mssql-python connects without an external driver manager.
python-oracledb is Oracle's official driver. In its default Thin mode, it connects straight to Oracle Database without Oracle Client libraries.
redis-py is the Python client for Redis, and MongoDB's docs call PyMongo the recommended way to work with MongoDB from Python. cassandra-driver talks to Apache Cassandra over Cassandra's binary protocol, with sync and async APIs.
With any SQL database, pass values as query parameters instead of formatting them into the SQL string. The sqlite3 docs say this avoids SQL injection. For more per database, see awesome-mysql, awesome-postgres, and awesome-sqlite.
Contribute
Know a project that belongs here?
Tell us what it does and why it stands out.