Files
Baradb/clients/python
dimgigov cd46edcb67
CI / test (push) Has been cancelled
CI / verify (push) Has been cancelled
Clients CI / build-server (push) Has been cancelled
Clients CI / test-python (push) Has been cancelled
Clients CI / test-javascript (push) Has been cancelled
Clients CI / test-nim (push) Has been cancelled
Clients CI / test-rust (push) Has been cancelled
Bump version to 1.1.6; fix storage bugs, tests, CI pipeline and Docker config
Storage fixes:
- Fix bloom filter hash2 OverflowDefect (uint64 instead of int Hash)
- Fix MemTable.put size calculation on overwrite (was leaking size)
- Fix fuzz_test duplicate-key issues in LSM delete and SSTable tests

Test fixes:
- Fix stress_test.nim: replace deprecated threadpool with std/threads
- Fix fuzz_test.nim: add missing imports (tables, algorithm, sets)
- Fix fuzz_test.nim: var sst for close() compatibility
- Remove unused imports from test_all.nim and bench_all.nim

Docker / CI fixes:
- Fix Dockerfile.source: invalid nimlang/nim:2.2.10-alpine tag → 2.2.10 + ubuntu:24.04 runtime
- Fix Dockerfile.source healthcheck (--spider → -qO- for 200 OK)
- Fix Dockerfile run comment ports (9470/9471 → 9912/9913)
- Fix scripts/docker-run.sh healthcheck port (9470 → 9912)
- Add ARG BUILD_DATE/VCS_REF to Dockerfile for docker-build.sh
- Update all version strings 1.1.4 → 1.1.6 across nimble/docker/source/docs
2026-05-19 12:13:33 +03:00
..

BaraDB Python Async Client

Official async Python client for BaraDB — a multimodal database engine written in Nim.

Features

  • Async/await — fully non-blocking, concurrent query support
  • Binary wire protocol — fast, compact TCP communication
  • Request queueing — sequential processing with concurrent execution
  • Query builder — fluent SQL construction
  • Parameterized queries — safe from SQL injection
  • Vector & JSON support — first-class multimodal types
  • Context managers — async async with statement support

Installation

pip install baradb

Or from source:

git clone https://codeberg.org/baraba/baradb
cd clients/python
pip install -e ".[dev]"

Quick Start

import asyncio
from baradb import Client

async def main():
    client = Client("localhost", 9472)
    await client.connect()

    result = await client.query("SELECT name, age FROM users WHERE age > 18")
    for row in result:
        print(row["name"], row["age"])

    await client.close()

asyncio.run(main())

Context Manager

import asyncio
from baradb import Client

async def main():
    async with Client("localhost", 9472) as client:
        result = await client.query("SELECT 1")
        print(result.row_count)

asyncio.run(main())

Parameterized Queries

import asyncio
from baradb import Client, WireValue

async def main():
    async with Client("localhost", 9472) as client:
        result = await client.query_params(
            "SELECT * FROM users WHERE age > $1 AND country = $2",
            [WireValue.int64(18), WireValue.string("BG")],
        )
        for row in result:
            print(row)

asyncio.run(main())

Query Builder

import asyncio
from baradb import Client, QueryBuilder

async def main():
    async with Client("localhost", 9472) as client:
        qb = (
            QueryBuilder(client)
            .select("name", "email")
            .from_("users")
            .where("active = true")
            .order_by("name")
            .limit(10)
        )
        result = await qb.exec()
        for row in result:
            print(row)

asyncio.run(main())
import asyncio
from baradb import Client, WireValue

async def main():
    async with Client("localhost", 9472) as client:
        result = await client.query_params(
            "SELECT id, name FROM products ORDER BY embedding <-> $1 LIMIT 5",
            [WireValue.vector([0.1, 0.2, 0.3])],
        )
        print(result.rows)

asyncio.run(main())

Running Tests

Unit tests (no server):

pytest tests/test_wire_protocol.py tests/test_query_builder.py

Integration tests (requires server on localhost:9472):

# Start server
docker run -d -p 9472:9472 barabadb:latest

# Run all tests
pytest

API Reference

Client(host, port, database, username, password, timeout)

Parameter Default Description
host localhost Server hostname
port 9472 TCP wire protocol port
database default Default database
username admin Username
password "" Password
timeout 30.0 Socket timeout in seconds

Methods (all async)

  • await client.connect() — open TCP connection
  • await client.close() — close connection
  • await client.query(sql) -> QueryResult — execute SELECT-like query
  • await client.query_params(sql, params) -> QueryResult — parameterized query
  • await client.execute(sql) -> int — execute DDL/DML, returns affected rows
  • await client.auth(token) — JWT authentication
  • await client.ping() -> bool — health check

License

Apache-2.0