oracledb
Python interface to Oracle Database
Install
oracledb on PyPI
pip
pip install oracledbuv
uv add oracledbpoetry
poetry add oracledbPackage facts
| License | UPL-1.0 OR Apache-2.0 (unclear) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | medium — platform-specific wheel |
| Runtime dependencies | 2 — cryptography, typing_extensions |
| Maintenance | actively maintained — 30 days since the last release |
| Last repo commit | |
| First released | |
| Popularity | one of the top 1,000 most-downloaded packages on PyPI (30-day window, as of 2026-08-13) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-13) |
Evidence: oracledb-4.0.2-cp310-cp310-macosx_10_9_universal2.whl; oracledb-4.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; oracledb-4.0.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; oracledb-4.0.2-cp310-cp310-musllinux_1_2_aarch64.whl; oracledb-4.0.2-cp310-cp310-musllinux_1_2_x86_64.whl; oracledb-4.0.2-cp310-cp310-win32.whl; oracledb-4.0.2-cp310-cp310-win_amd64.whl; oracledb-4.0.2-cp311-cp311-macosx_10_9_universal2.whl; oracledb-4.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; oracledb-4.0.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; oracledb-4.0.2-cp311-cp311-musllinux_1_2_aarch64.whl; oracledb-4.0.2-cp311-cp311-musllinux_1_2_x86_64.whl; oracledb-4.0.2-cp311-cp311-win32.whl; oracledb-4.0.2-cp311-cp311-win_amd64.whl; oracledb-4.0.2-cp311-cp311-win_arm64.whl; oracledb-4.0.2-cp312-cp312-macosx_10_13_universal2.whl; oracledb-4.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl; oracledb-4.0.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl; oracledb-4.0.2-cp312-cp312-musllinux_1_2_aarch64.whl; oracledb-4.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Keywords: Oracle, database
About oracledb
from the package's own PyPI description — quoted content, verbatim
python-oracledb
The python-oracledb driver is the widely used, open-source [Python][python] extension module allowing Python programs to connect directly to [Oracle Database][oracledb] with no extra libraries needed. The module is built with Cython for safety and speed. It is lightweight and high-performance. It is stable, well tested, and has comprehensive [documentation][documentation]. The module is maintained by Oracle.
The module conforms to the [Python Database API 2.0 specification][pep249] with a considerable number of additions and a couple of minor exclusions, see the [feature list][features]. It is used by many Python frameworks, SQL generators, ORMs, and libraries.
Python-oracledb has a rich feature set which is easy to use. It gives you control over SQL and PL/SQL statement execution; for working with data frames; for fast data ingestion; for calling NoSQL-style document APIs; for message queueing; for receiving database notifications; and for starting and stopping the database. It also has high availability and security features. Synchronous and [concurrent][concurrent] coding styles are supported. Database operations can optionally be...
Read as markdown · JSON record · Source repository · Homepage · Docs
AI interpretation — verify before relying
AI-generated interpretation of the package facts above; every digit, version, license, or vulnerability id it cites is grounded in the facts already shown on this page
A Python driver for connecting to Oracle Database directly, supporting both thin mode (no external libraries) and thick mode (with optional Oracle Client libraries) for SQL and PL/SQL execution.
Medium install friction due to platform-specific wheels across multiple Python versions (3.9–3.14) and architectures. Active maintenance with a release 30 days ago and recent commits signal ongoing support. Runtime dependencies on cryptography and typing_extensions are both stable, widely-used packages.
License treatment is unclear: the package declares dual licensing under UPL-1.0 OR Apache-2.0, but the fact sheet does not confirm which license applies or how they interact. Review the LICENSE and THIRD_PARTY_LICENSES files in the repository before adoption in proprietary or GPL-licensed projects.
Usage
import oracledb
with oracledb.connect(user="scott", password="pw", dsn="localhost/orclpdb") as connection:
with connection.cursor() as cursor:
for row in cursor.execute("select sysdate from dual"):
print(row)
Python 3.9 or later required. Thin mode requires Oracle Database 12.1+; thick mode (with optional Oracle Client libraries) requires Oracle Database 11.2+.
Verdict: oracledb is a production-stable, actively maintained driver built with Cython for performance and safety. It has no known vulnerabilities, supports Python 3.9–3.14, and ranks in the top 1000 PyPI packages. The dual license (UPL-1.0 OR Apache-2.0) requires clarification for some use cases, and medium install friction reflects platform-specific wheels, but these are minor concerns for Oracle Database users.
Needs verification
- Which of UPL-1.0 or Apache-2.0 applies by default, or how does the dual license work in practice?
- Does the package require compilation or system libraries beyond cryptography and typing_extensions?
Similar packages
permissive · top 1,000 on PyPI
PyMySQLpermissive · top 1,000 on PyPI
pg8000permissive · top 1,000 on PyPI
packagingpermissive · top 100 on PyPI
redshift-connectorpermissive · top 1,000 on PyPI
dbt-adapterspermissive · top 1,000 on PyPI
cattrspermissive · top 1,000 on PyPI
coherepermissive · top 1,000 on PyPI
greenletpermissive · top 100 on PyPI
PyAthenapermissive · top 1,000 on PyPI