Files
Baradb/clients/python/examples/basic.py
T
dimgigov 359f945170
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
fix(clients): repair Python & Rust tests, add container test orchestration
- Python: fix wire protocol test method names (bool_val -> bool, etc.)
- Python: make integration tests and example fully async with pytest-asyncio
- Rust: add tokio dev-dependency and convert integration tests to async/await
- Rust: update ping_test example to async
- Nim: remove committed ELF build artifact
- Docker: add BARADB_HOST/BARADB_PORT env vars to test containers
- Docker: fix docker-compose.test.yml usage (remove --abort-on-container-exit)
- Add scripts/test-clients.sh for sequential client test runs
- Remove docker-compose.test.yml from .gitignore so it is tracked
- Fix repository URLs in Python and Rust READMEs
2026-05-14 23:35:45 +03:00

142 lines
4.0 KiB
Python

#!/usr/bin/env python3
"""
BaraDB Python Client — Basic Examples
This script demonstrates common operations with the BaraDB Python client.
Run it while a BaraDB server is listening on localhost:9472.
"""
import asyncio
import sys
from baradb import Client, QueryBuilder, WireValue
async def example_connection():
print("=== Connection ===")
client = Client("localhost", 9472)
await client.connect()
print(f"Connected: {client.is_connected()}")
print(f"Ping: {await client.ping()}")
await client.close()
print(f"Connected after close: {client.is_connected()}")
print()
async def example_context_manager():
print("=== Context Manager ===")
async with Client("localhost", 9472) as client:
print(f"Inside context: {client.is_connected()}")
print(f"Ping: {await client.ping()}")
print("Outside context: closed automatically")
print()
async def example_simple_query():
print("=== Simple Query ===")
async with Client("localhost", 9472) as client:
result = await client.query("SELECT 42 as answer, 'BaraDB' as db")
print(f"Columns: {result.columns}")
print(f"Rows: {result.rows}")
print(f"Row count: {result.row_count}")
for row in result:
print(f" answer={row['answer']}, db={row['db']}")
print()
async def example_parameterized_query():
print("=== Parameterized Query ===")
async with Client("localhost", 9472) as client:
result = await client.query_params(
"SELECT $1 as num, $2 as txt, $3 as flag",
[
WireValue.int64(123),
WireValue.string("hello world"),
WireValue.bool(True),
],
)
for row in result:
print(f" num={row['num']}, txt={row['txt']}, flag={row['flag']}")
print()
async def example_query_builder():
print("=== Query Builder ===")
async with Client("localhost", 9472) as client:
sql = (
QueryBuilder(client)
.select("id", "name")
.from_("users")
.where("active = true")
.order_by("name", "ASC")
.limit(5)
.build()
)
print(f"Generated SQL: {sql}")
print()
async def example_vector():
print("=== Vector Value ===")
async with Client("localhost", 9472) as client:
result = await client.query_params(
"SELECT $1 as embedding",
[WireValue.vector([0.1, 0.2, 0.3, 0.4])],
)
for row in result:
print(f" embedding type: {type(row['embedding'])}")
print()
async def example_ddl_dml():
print("=== DDL & DML ===")
async with Client("localhost", 9472) as client:
# Clean up
try:
await client.execute("DROP TABLE IF EXISTS demo_products")
except Exception as exc:
print(f"Cleanup warning: {exc}")
await client.execute(
"CREATE TABLE demo_products (id INT PRIMARY KEY, name STRING, price FLOAT)"
)
affected = await client.execute(
"INSERT INTO demo_products (id, name, price) VALUES (1, 'Widget', 9.99)"
)
print(f"Insert affected rows: {affected}")
result = await client.query("SELECT * FROM demo_products")
print(f"Select returned {result.row_count} row(s)")
for row in result:
print(f" {row}")
await client.execute("DROP TABLE demo_products")
print("Table dropped")
print()
async def main():
print("BaraDB Python Client Examples")
print("Make sure BaraDB is running on localhost:9472")
print()
examples = [
example_connection,
example_context_manager,
example_simple_query,
example_parameterized_query,
example_query_builder,
example_vector,
example_ddl_dml,
]
for fn in examples:
try:
await fn()
except Exception as exc:
print(f"ERROR in {fn.__name__}: {exc}", file=sys.stderr)
if __name__ == "__main__":
asyncio.run(main())