Skip to main content

NexaClient (Python)

Official Python client for NexaDB - The high-performance, easy-to-use database.

Features

  • 3-10x faster than HTTP/REST - Binary protocol with MessagePack encoding
  • Persistent TCP connections - No HTTP overhead
  • Context manager support - Pythonic with statement
  • Type hints - Full type annotations for better IDE support
  • Automatic reconnection - Built-in connection management
  • Connection pooling - Handle 1000+ concurrent operations

Installation

pip install nexaclient

Quick Start

from nexaclient import NexaClient

# Using context manager (recommended)
with NexaClient(host='localhost', port=6970, username='root', password='nexadb123') as db:
    # Create document
    user = db.create('users', {
        'name': 'John Doe',
        'email': 'john@example.com'
    })

    # Get document
    found = db.get('users', user['document_id'])

    # Update document
    db.update('users', user['document_id'], {'age': 30})

    # Query documents
    results = db.query('users', {'age': {'$gte': 25}})

    # Delete document
    db.delete('users', user['document_id'])

API Reference

Constructor

db = NexaClient(host='localhost', port=6970, timeout=30)

Parameters:

  • host (str) - Server host (default: 'localhost')
  • port (int) - Server port (default: 6970)
  • username (str) - Username for authentication (default: 'root')
  • password (str) - Password for authentication (default: 'nexadb123')
  • timeout (int) - Connection timeout in seconds (default: 30)

Methods

connect()

Connect to NexaDB server.

db = NexaClient()
db.connect()

create(collection, data)

Create document in collection.

result = db.create('users', {
    'name': 'Alice',
    'email': 'alice@example.com'
})
# Returns: {'collection': 'users', 'document_id': '...', 'message': '...'}

get(collection, key)

Get document by ID.

user = db.get('users', user_id)
# Returns: {'_id': '...', 'name': 'Alice', ...} or None

update(collection, key, updates)

Update document.

db.update('users', user_id, {
    'age': 30,
    'department': 'Engineering'
})

delete(collection, key)

Delete document.

db.delete('users', user_id)

query(collection, filters, limit=100)

Query documents with filters.

results = db.query('users', {
    'role': 'developer',
    'age': {'$gte': 25}
}, limit=100)
# Returns: [{'_id': '...', 'name': '...', ...}, ...]

batch_write(collection, documents)

Bulk insert documents.

db.batch_write('users', [
    {'name': 'Alice', 'email': 'alice@example.com'},
    {'name': 'Bob', 'email': 'bob@example.com'},
    {'name': 'Carol', 'email': 'carol@example.com'}
])

vector_search(collection, vector, limit=10, dimensions=768)

Vector similarity search (for AI/ML applications).

results = db.vector_search('embeddings', [0.1, 0.2, ...], limit=10)
# Returns: [{'document_id': '...', 'similarity': 0.95, 'document': {...}}, ...]

ping()

Ping server (keep-alive / health check).

pong = db.ping()

disconnect()

Disconnect from server.

db.disconnect()

Context Manager

The recommended way to use NexaClient is with a context manager:

with NexaClient(host='localhost', port=6970, username='root', password='nexadb123') as db:
    # Connection is automatically established
    user = db.create('users', {'name': 'John'})
    # Connection is automatically closed when exiting the block

This ensures proper connection management and cleanup.

Performance

NexaClient uses a custom binary protocol for maximum performance:

Metric HTTP/REST NexaDB (Binary) Improvement
Latency 5-10ms 1-2ms 3-5x faster
Throughput 1K ops/sec 5-10K ops/sec 5-10x faster
Bandwidth 300KB 62KB 80% less

Examples

Basic CRUD

from nexaclient import NexaClient

with NexaClient() as db:
    # Create
    user = db.create('users', {
        'name': 'Alice Johnson',
        'email': 'alice@example.com',
        'age': 28,
        'role': 'developer'
    })

    user_id = user['document_id']

    # Read
    found = db.get('users', user_id)
    print(f"Found user: {found['name']}")

    # Update
    db.update('users', user_id, {
        'age': 29,
        'department': 'Engineering'
    })

    # Delete
    db.delete('users', user_id)

Batch Operations

with NexaClient() as db:
    # Bulk insert
    users = [
        {'name': 'Alice', 'email': 'alice@example.com'},
        {'name': 'Bob', 'email': 'bob@example.com'},
        {'name': 'Carol', 'email': 'carol@example.com'}
    ]

    result = db.batch_write('users', users)
    print(f"Inserted {result['count']} users")

Querying

with NexaClient() as db:
    # Find all developers aged 25+
    developers = db.query('users', {
        'role': 'developer',
        'age': {'$gte': 25}
    }, limit=10)

    for user in developers:
        print(f"{user['name']} - {user['age']} years old")
import numpy as np
from nexadb import NexaClient

with NexaClient() as db:
    # Generate or load embedding vector
    query_vector = np.random.rand(768).tolist()

    # Search for similar documents
    results = db.vector_search('embeddings', query_vector, limit=5)

    for result in results:
        print(f"Similarity: {result['similarity']:.2f}")
        print(f"Document: {result['document']}")

Requirements

  • Python >= 3.7
  • msgpack >= 1.0.0
  • NexaDB server running on localhost:6970 (or custom host/port)

NexaDB vs MongoDB

Feature MongoDB NexaDB
Setup 15 min 2 min (brew install nexadb)
Write speed ~50K/s ~89K/s
Memory 2-4 GB 111 MB
Protocol Custom binary Custom binary
Python client pymongo nexaclient (this package)

License

MIT

Contributing

Contributions are welcome! Please open an issue or PR on GitHub.

Support

For support, please:

Metadata

Release files for nexaclient 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for nexaclient 3.0.0
File Size Uploaded
nexaclient-3.0.0.tar.gz 13.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for nexaclient 3.0.0
File Interpreter ABI Platform
nexaclient-3.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 25.7 kB

Release files / nexaclient-3.0.0.tar.gz

Download URL nexaclient-3.0.0.tar.gz
Size 13.7 kB
Tags Source
SHA-256 checksum
How to use checksums
75efc6cf31f9623143a35d78ab7e4ad52aeeabcf872b781f9505cc4b8405be6a
BLAKE2b-256 checksum
How to use checksums
67a7eee3c8c0e5c4f6909f2844792a19410a4d2c7fc673a6994ed7c6e0e15ddf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release files / nexaclient-3.0.0-py3-none-any.whl

Download URL nexaclient-3.0.0-py3-none-any.whl
Size 12.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
213829428f334ba8b4cc91bf2f5a644720f6830d1d4ab55b760923afe48fb397
BLAKE2b-256 checksum
How to use checksums
53f40e015fd90e8b77b7788a5b878d9873346c35d1da8437a0fbda5a70cc3a3a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.0

Release history Release notifications | RSS feed

This release

3.0.0 This release

2 release files

2.3.0

2 release files

1.3.0

2 release files

1.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page