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 |
|---|---|---|---|
|
Native: the engine compiled by GraalVM Community Edition, loaded with |
Scripts, notebooks, tests, CLIs, serverless functions and agents. |
|
|
JVM: the Java engine in your process through JPype, with a bundled Java 25 runtime. |
Heavy, long-running loads, and the Java-object APIs. |
|
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 |
|
A running server (the official Docker image |
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 formain, 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.