ArcadeDB Python Bindings¶
-
Production Ready
Native Python bindings for ArcadeDB with comprehensive embedded coverage
- Status: ✅ Production Ready
- Tests: ✅ Full suite green on every platform build
-
Pure Python API
Pythonic interface to ArcadeDB's multi-model database
-
Multi-Model Database
Graph, Document, Key/Value, Vector, Time Series in one database
-
High Performance
Direct JVM integration via JPype for maximum speed
What is ArcadeDB?¶
ArcadeDB is a next-generation multi-model database that supports:
- Graph: Native property graphs with vertices and edges
- Document: Schema-less JSON documents
- Key/Value: Fast key-value pairs
- Vector: Embeddings with HNSW (JVector) similarity search
- Time Series: Temporal data with efficient indexing
- Search Engine: Full-text search with Lucene
Why Python Bindings?¶
These bindings provide native Python access to ArcadeDB's full capabilities through an embedded engine:
Embedded Engine (DSL-first)¶
- Direct JVM Integration: Run database directly in your Python process via JPype
- Best Performance: No network overhead, direct method calls
- Use Cases: Single-process applications, high-performance scenarios
- Recommended style: SQL/OpenCypher via
db.command(...)anddb.query(...) - Example:
Need client-server or multi-process access?
This package is embedded-only. For HTTP access, remote clients, or several processes sharing one database, run the official ArcadeDB server alongside — see Access Methods.
Additional Features¶
- Multiple Query Languages: SQL, OpenCypher, MongoDB syntax
- ACID Transactions: Full transactional guarantees
- Type Safety: Strong Python type handling and clear errors
Current Ingest Guidance¶
The bindings are SQL/Cypher-first, but the recommended ingest path depends on what you are doing.
- For normal application code, prefer SQL/OpenCypher through
db.command(...)anddb.query(...). - For file-driven imports or restore flows, use SQL
IMPORT DATABASEor the narrowdb.import_documents(...)wrapper when you specifically need document-file import. - For bulk table/document ingest from Python, prefer async SQL insert with a single async worker.
- Do not rely on multi-threaded async SQL insert for that path in the current Python examples. It has not been safe or reliable in testing.
- For bulk graph ingest from Python, prefer
GraphBatch.
Features¶
Core Features
- 🚀 Embedded Mode - Direct database access in Python process
- 📦 Self-contained - All JARs and JRE bundled
- 🔄 Multi-model - Graph, Document, Key/Value, Vector
- 🔍 Multiple languages - SQL, OpenCypher, MongoDB
Advanced Features
- ⚡ High performance - Direct JVM integration via JPype
- 🔒 ACID transactions - Full transaction support
- 🎯 Vector storage - HNSW (JVector) indexing for embeddings
- 📥 Data import - CSV and ArcadeDB JSONL
- 🔎 Full-text search - Lucene integration
Quick Example¶
import arcadedb_embedded as arcadedb
with arcadedb.create_database("./mydb") as db:
db.command("sql", "CREATE DOCUMENT TYPE Person")
db.command("sql", "CREATE PROPERTY Person.name STRING")
db.command("sql", "CREATE PROPERTY Person.age INTEGER")
with db.transaction():
db.command("sql", "INSERT INTO Person SET name = 'Alice', age = 30")
result = db.query("sql", "SELECT FROM Person WHERE age > 25")
for record in result:
print(f"Name: {record.get('name')}")
Resource Management
Always use context managers (with statements) for automatic resource cleanup!
Package Coverage¶
These bindings provide comprehensive coverage of ArcadeDB's Java API, focusing on features most relevant to Python developers:
| Module | Coverage | Description |
|---|---|---|
| Core Operations | ✅ 100% | Database, queries, transactions |
| Schema Management | ✅ 100% | Types, properties, indexes |
| Vector Search | ✅ 100% | HNSW (JVector) indexing, similarity search |
| Data Import | ✅ 100% | CSV, XML, and ArcadeDB JSONL |
| Data Export | ✅ 100% | JSONL, GraphML, GraphSON; CSV for query results |
| Graph API | ✅ 85% | Full support via SQL and OpenCypher |
See Java API Coverage for detailed comparison.
Distribution¶
We provide a single, self-contained package that works on all major platforms:
| Platforms | Package Name | Size | What's Included |
|---|---|---|---|
| linux/amd64, linux/arm64, darwin/arm64, windows/amd64 | arcadedb-embedded |
~62MB wheel, ~87MB installed | Embedded ArcadeDB + Bundled JRE |
The package uses the standard import:
No Java Installation Required!
The package includes a bundled Java 25 Runtime Environment (JRE) optimized for ArcadeDB. You do not need to install Java separately on your system.
Getting Started¶
-
Installation instructions
-
Get up and running in 5 minutes
-
Comprehensive guide to all features
-
Detailed API documentation
Requirements¶
- Python: 3.10–3.14 (packaged; primary testing on 3.12)
- OS: Linux (x86_64, ARM64), macOS (Apple Silicon), or Windows (x86_64)
Self-Contained
Everything needed to run ArcadeDB is included in the wheel. Current Linux x86_64 package metadata and local installs are in this ballpark, with small variation by platform, version, and filesystem:
- Bundled JRE (Platform-specific Java 25 runtime trimmed with jlink to only what's required for ArcadeDB, ~63MB uncompressed)
- ArcadeDB JARs (~24MB uncompressed)
- Wheel download (~62MB compressed)
- Installed package on disk (~87MB)
- JPype (Bridge between Python and the bundled JVM)
Community & Support¶
- PyPI: arcadedb-embedded
- GitHub: humemai/arcadedb-embedded-python
- Issues: Report bugs
- ArcadeDB Docs: docs.arcadedb.com
License¶
Both upstream ArcadeDB (Java) and this ArcadeDB Embedded Python project are licensed under Apache 2.0, fully open and free for everyone, including commercial use.