ArcadeDB Python

These packages run the ArcadeDB engine inside your Python process, with no network hop and no server to start. Two packages exist, and both use the import name arcadedb:

Package Engine Pick it for Install

arcadedb (the default)

Native: the engine compiled by GraalVM Community Edition, loaded with ctypes. No JVM, no JPype.

Scripts, notebooks, tests, CLIs, serverless functions and agents.

pip install arcadedb

arcadedb-jvm

JVM: the Java engine in your process through JPype, with a bundled Java 25 runtime.

Heavy, long-running loads, and the Java-object APIs.

pip install arcadedb-jvm

Not sure which one? Take arcadedb, and read Which package? to decide for sure. Install one of them, not both.

Transition note. The first release of this layout is 26.11.1, and arcadedb may first appear as pre-releases, 26.11.1.devN. Until a final 26.11.1 is on PyPI, these pre-releases are all there is, and a plain pip install arcadedb or uv add arcadedb installs the newest one. See Installation.

ArcadeDB is a multi-model database: graph, document, key/value, vector and time series data live in one database, and you query it with SQL or openCypher. The bindings expose the two calls you need for that, db.command(…​) and db.query(…​).

import arcadedb

with arcadedb.create_database("./mydb") as db:
    db.command("sql", "CREATE DOCUMENT TYPE Person")
    with db.transaction():
        db.command("sql", "INSERT INTO Person SET name = ?, age = ?", "Alice", 30)
    for record in db.query("sql", "SELECT FROM Person WHERE age > 25"):
        print(record.get("name"))
Alice

This page is the map. Installation and Quickstart get you to a working database, and the how-to guides go deeper.

Embedded bindings or the HTTP driver

ArcadeDB reaches Python in two ways. Pick by where the engine should run.

Embedded bindings (this component) HTTP driver

Where the engine runs

In your Python process

In a separate ArcadeDB server

Who can reach the data

One process at a time: the database directory is locked while it is open

Any number of clients, local or remote

Network round trip

None

One per call

Setup

pip install arcadedb or pip install arcadedb-jvm

A running server (the official Docker image arcadedata/arcadedb), plus pip install arcadedb-driver

Choose the embedded bindings for a single script, a notebook, or an application with one Python process that owns its data. Choose the HTTP driver when more than one process, another language, or a remote machine must reach the same database, or when the server must outlive your Python process.

The two meet in one case. The bindings bundle an optional HTTP server. It is off until you call create_server(). The process that owns the database keeps direct access, and other processes connect over HTTP. That server lives and dies with your Python process. For a database that must outlive any one client, or for HA, replication and TLS, run the regular ArcadeDB server instead.

Native build or JVM build

Both packages give you the same engine and the same API. Which package? lists what differs. The pages in this component apply to both packages, and a part that applies to one says so.

Check which one you have with python -c "import arcadedb; print(arcadedb.backend)". It prints native or jvm.

Requirements

  • Python 3.11 to 3.14, and 3.15 for arcadedb. The wheels' CI runs all four versions on every supported platform for main, the nightly run and each release. A pull request runs a smaller selection (Continuous integration).

  • Linux (x86_64 and ARM64, glibc: no Alpine), macOS on Apple Silicon (no Intel Mac), or Windows (x86_64). The Windows wheel of the native build is the newest. The glibc floors and the other platforms that are not built are in Requirements.

  • No Java installation, for either package.

The bindings are licensed under Apache 2.0, like the ArcadeDB engine.