skillfed

oracledb

Python interface to Oracle Database

oracledb License unclear UPL-1.0 OR Apache-2.0 Active 446 v4.0.2 released

Install

oracledb on PyPI

pip

pip install oracledb

uv

uv add oracledb

poetry

poetry add oracledb

Package 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

Development Status :: 5 - Production/StableIntended Audience :: DevelopersNatural Language :: EnglishOperating System :: OS IndependentProgramming Language :: CythonProgramming Language :: Python :: 3 :: OnlyProgramming Language :: Python :: 3.10Programming Language :: Python :: 3.11Programming Language :: Python :: 3.12Programming Language :: Python :: 3.13Programming Language :: Python :: 3.14Programming Language :: Python :: 3.9Programming Language :: Python :: Implementation :: CPythonTopic :: 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?
oracle database python driveroracle db connection librarypython oracle clientoracle sql executionoracle database adapteroracledb connectorpython to oracle database

Similar packages