Databend Driver Python Binding
Project description
databend-driver
Databend Python Client
Usage
PEP 249 Cursor Object
from databend_driver import BlockingDatabendClient
client = BlockingDatabendClient('databend://root:root@localhost:8000/?sslmode=disable')
cursor = client.cursor()
cursor.execute(
"""
CREATE TABLE test (
i64 Int64,
u64 UInt64,
f64 Float64,
s String,
s2 String,
d Date,
t DateTime
)
"""
)
cursor.execute("INSERT INTO test VALUES (?, ?, ?, ?, ?, ?, ?)", (1, 1, 1.0, 'hello', 'world', '2021-01-01', '2021-01-01 00:00:00'))
cursor.execute("SELECT * FROM test")
rows = cursor.fetchall()
for row in rows:
print(row.values())
Blocking Connection Object
from databend_driver import BlockingDatabendClient
client = BlockingDatabendClient('databend://root:root@localhost:8000/?sslmode=disable')
conn = client.get_conn()
conn.exec(
"""
CREATE TABLE test (
i64 Int64,
u64 UInt64,
f64 Float64,
s String,
s2 String,
d Date,
t DateTime
)
"""
)
rows = conn.query_iter("SELECT * FROM test")
for row in rows:
print(row.values())
Asyncio Connection Object
import asyncio
from databend_driver import AsyncDatabendClient
async def main():
client = AsyncDatabendClient('databend://root:root@localhost:8000/?sslmode=disable')
conn = await client.get_conn()
await conn.exec(
"""
CREATE TABLE test (
i64 Int64,
u64 UInt64,
f64 Float64,
s String,
s2 String,
d Date,
t DateTime
)
"""
)
rows = await conn.query_iter("SELECT * FROM test")
async for row in rows:
print(row.values())
asyncio.run(main())
Parameter bindings
# Test with positional parameters
row = await context.conn.query_row("SELECT ?, ?, ?, ?", (3, False, 4, "55"))
row = await context.conn.query_row(
"SELECT :a, :b, :c, :d", {"a": 3, "b": False, "c": 4, "d": "55"}
)
row = await context.conn.query_row(
"SELECT ?", 3
)
row = await context.conn.query_row("SELECT ?, ?, ?, ?", params = (3, False, 4, "55"))
Type Mapping
General Data Types
Databend | Python |
---|---|
BOOLEAN |
bool |
TINYINT |
int |
SMALLINT |
int |
INT |
int |
BIGINT |
int |
FLOAT |
float |
DOUBLE |
float |
DECIMAL |
decimal.Decimal |
DATE |
datetime.date |
TIMESTAMP |
datetime.datetime |
INTERVAL |
datetime.timedelta |
VARCHAR |
str |
BINARY |
bytes |
Semi-Structured Data Types
Databend | Python |
---|---|
ARRAY |
list |
TUPLE |
tuple |
MAP |
dict |
VARIANT |
str |
BITMAP |
str |
GEOMETRY |
str |
GEOGRAPHY |
str |
Note: VARIANT
is a json encoded string. Example:
CREATE TABLE example (
data VARIANT
);
INSERT INTO example VALUES ('{"a": 1, "b": "hello"}');
row = await conn.query_row("SELECT * FROM example limit 1;")
data = row.values()[0]
value = json.loads(data)
print(value)
APIs
AsyncDatabendClient
class AsyncDatabendClient:
def __init__(self, dsn: str): ...
async def get_conn(self) -> AsyncDatabendConnection: ...
AsyncDatabendConnection
class AsyncDatabendConnection:
async def info(self) -> ConnectionInfo: ...
async def version(self) -> str: ...
async def exec(self, sql: str, params: list[string] | tuple[string] | any = None) -> int: ...
async def query_row(self, sql: str, params: list[string] | tuple[string] | any = None) -> Row: ...
async def query_iter(self, sql: str, params: list[string] | tuple[string] | any = None) -> RowIterator: ...
async def stream_load(self, sql: str, data: list[list[str]]) -> ServerStats: ...
async def load_file(self, sql: str, file: str, format_option: dict, copy_options: dict = None) -> ServerStats: ...
BlockingDatabendClient
class BlockingDatabendClient:
def __init__(self, dsn: str): ...
def get_conn(self) -> BlockingDatabendConnection: ...
def cursor(self) -> BlockingDatabendCursor: ...
BlockingDatabendConnection
class BlockingDatabendConnection:
def info(self) -> ConnectionInfo: ...
def version(self) -> str: ...
def exec(self, sql: str, params: list[string] | tuple[string] | any = None) -> int: ...
def query_row(self, sql: str, params: list[string] | tuple[string] | any = None) -> Row: ...
def query_iter(self, sql: str, params: list[string] | tuple[string] | any = None) -> RowIterator: ...
def stream_load(self, sql: str, data: list[list[str]]) -> ServerStats: ...
def load_file(self, sql: str, file: str, format_option: dict, copy_options: dict = None) -> ServerStats: ...
BlockingDatabendCursor
class BlockingDatabendCursor:
@property
def description(self) -> list[tuple[str, str, int | None, int | None, int | None, int | None, bool | None]] | None: ...
@property
def rowcount(self) -> int: ...
def close(self) -> None: ...
def execute(self, operation: str, params: list[string] | tuple[string] = None) -> None | int: ...
def executemany(self, operation: str, params: list[string] | tuple[string] = None, values: list[list[string] | tuple[string]]) -> None | int: ...
def fetchone(self) -> Row | None: ...
def fetchmany(self, size: int = 1) -> list[Row]: ...
def fetchall(self) -> list[Row]: ...
# Optional DB API Extensions
def next(self) -> Row: ...
def __next__(self) -> Row: ...
def __iter__(self) -> BlockingDatabendCursor: ...
Row
class Row:
def values(self) -> tuple: ...
def __len__(self) -> int: ...
def __iter__(self) -> Row: ...
def __next__(self) -> any: ...
def __dict__(self) -> dict: ...
def __getitem__(self, key: int | str) -> any: ...
RowIterator
class RowIterator:
def schema(self) -> Schema: ...
def __iter__(self) -> RowIterator: ...
def __next__(self) -> Row: ...
def __aiter__(self) -> RowIterator: ...
async def __anext__(self) -> Row: ...
Field
class Field:
@property
def name(self) -> str: ...
@property
def data_type(self) -> str: ...
Schema
class Schema:
def fields(self) -> list[Field]: ...
ServerStats
class ServerStats:
@property
def total_rows(self) -> int: ...
@property
def total_bytes(self) -> int: ...
@property
def read_rows(self) -> int: ...
@property
def read_bytes(self) -> int: ...
@property
def write_rows(self) -> int: ...
@property
def write_bytes(self) -> int: ...
@property
def running_time_ms(self) -> float: ...
ConnectionInfo
class ConnectionInfo:
@property
def handler(self) -> str: ...
@property
def host(self) -> str: ...
@property
def port(self) -> int: ...
@property
def user(self) -> str: ...
@property
def database(self) -> str | None: ...
@property
def warehouse(self) -> str | None: ...
Development
cd tests
make up
cd bindings/python
uv sync
source .venv/bin/activate
maturin develop --uv
behave tests/asyncio
behave tests/blocking
behave tests/cursor
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
File details
Details for the file databend_driver-0.27.5-cp37-abi3-win_amd64.whl
.
File metadata
- Download URL: databend_driver-0.27.5-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 6.6 MB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
d82bb0ef04a3590ba848e9421d2cf3fb6df6a23a48cee77b9e9e2df07e8e10f6
|
|
MD5 |
49c42fe858ac462496bf6576cf17f259
|
|
BLAKE2b-256 |
b92a92b253fdc055bc6a176566a43b16a955a20180eae9a7a16c160da85b8cac
|
Provenance
The following attestation bundles were made for databend_driver-0.27.5-cp37-abi3-win_amd64.whl
:
Publisher:
bindings.python.yml
on databendlabs/bendsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
databend_driver-0.27.5-cp37-abi3-win_amd64.whl
-
Subject digest:
d82bb0ef04a3590ba848e9421d2cf3fb6df6a23a48cee77b9e9e2df07e8e10f6
- Sigstore transparency entry: 236078750
- Sigstore integration time:
-
Permalink:
databendlabs/bendsql@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Branch / Tag:
refs/tags/v0.27.5
- Owner: https://github.com/databendlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
bindings.python.yml@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Trigger Event:
push
-
Statement type:
File details
Details for the file databend_driver-0.27.5-cp37-abi3-manylinux_2_28_aarch64.whl
.
File metadata
- Download URL: databend_driver-0.27.5-cp37-abi3-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 6.2 MB
- Tags: CPython 3.7+, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c55479161751500a2904dc396fc42118d571c623d8dfb8c4207e51c8c7ba5571
|
|
MD5 |
c146f2a75bff18c34efc4edd2354a3dc
|
|
BLAKE2b-256 |
563d7977ba952a8fc966c397966a826f982afc975a5e84daa3aaa87965a73d5c
|
Provenance
The following attestation bundles were made for databend_driver-0.27.5-cp37-abi3-manylinux_2_28_aarch64.whl
:
Publisher:
bindings.python.yml
on databendlabs/bendsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
databend_driver-0.27.5-cp37-abi3-manylinux_2_28_aarch64.whl
-
Subject digest:
c55479161751500a2904dc396fc42118d571c623d8dfb8c4207e51c8c7ba5571
- Sigstore transparency entry: 236078745
- Sigstore integration time:
-
Permalink:
databendlabs/bendsql@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Branch / Tag:
refs/tags/v0.27.5
- Owner: https://github.com/databendlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
bindings.python.yml@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Trigger Event:
push
-
Statement type:
File details
Details for the file databend_driver-0.27.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: databend_driver-0.27.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 6.7 MB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
591ede35ebd03604f0c5d9000a15149ca14120c646d9f8cefc14f35a6987d379
|
|
MD5 |
16abf6561e5f5767b841e69c8fc23ef5
|
|
BLAKE2b-256 |
1b6e725b0a8c3a4d30b3f4f4237ad7d666f86d736a8ccef2ba2d989d13f5ae86
|
Provenance
The following attestation bundles were made for databend_driver-0.27.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
:
Publisher:
bindings.python.yml
on databendlabs/bendsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
databend_driver-0.27.5-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
-
Subject digest:
591ede35ebd03604f0c5d9000a15149ca14120c646d9f8cefc14f35a6987d379
- Sigstore transparency entry: 236078748
- Sigstore integration time:
-
Permalink:
databendlabs/bendsql@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Branch / Tag:
refs/tags/v0.27.5
- Owner: https://github.com/databendlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
bindings.python.yml@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Trigger Event:
push
-
Statement type:
File details
Details for the file databend_driver-0.27.5-cp37-abi3-macosx_11_0_arm64.whl
.
File metadata
- Download URL: databend_driver-0.27.5-cp37-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 5.9 MB
- Tags: CPython 3.7+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ab83a374fec7411dbe341e7bef20bdab16d63b8768d31862e99343e40c85a76c
|
|
MD5 |
b2243f39eb120d97df11f92e71022c1e
|
|
BLAKE2b-256 |
f345deaee0313be3482503f0ea0ce57a80a984a45496e2f0a7a3cf6153515753
|
Provenance
The following attestation bundles were made for databend_driver-0.27.5-cp37-abi3-macosx_11_0_arm64.whl
:
Publisher:
bindings.python.yml
on databendlabs/bendsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
databend_driver-0.27.5-cp37-abi3-macosx_11_0_arm64.whl
-
Subject digest:
ab83a374fec7411dbe341e7bef20bdab16d63b8768d31862e99343e40c85a76c
- Sigstore transparency entry: 236078743
- Sigstore integration time:
-
Permalink:
databendlabs/bendsql@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Branch / Tag:
refs/tags/v0.27.5
- Owner: https://github.com/databendlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
bindings.python.yml@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Trigger Event:
push
-
Statement type:
File details
Details for the file databend_driver-0.27.5-cp37-abi3-macosx_10_12_x86_64.whl
.
File metadata
- Download URL: databend_driver-0.27.5-cp37-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 6.5 MB
- Tags: CPython 3.7+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c48f716b9dbfc371a705f02576ba1dc036d53b779dae4e717d76c53d2ee95245
|
|
MD5 |
e7d2f16f16ca412b7255c8189f091c9d
|
|
BLAKE2b-256 |
ace2b8a18385dd49482d9240627cc3a1cfe648bb3e90862c995f996b10111639
|
Provenance
The following attestation bundles were made for databend_driver-0.27.5-cp37-abi3-macosx_10_12_x86_64.whl
:
Publisher:
bindings.python.yml
on databendlabs/bendsql
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1
-
Predicate type:
https://docs.pypi.org/attestations/publish/v1
-
Subject name:
databend_driver-0.27.5-cp37-abi3-macosx_10_12_x86_64.whl
-
Subject digest:
c48f716b9dbfc371a705f02576ba1dc036d53b779dae4e717d76c53d2ee95245
- Sigstore transparency entry: 236078753
- Sigstore integration time:
-
Permalink:
databendlabs/bendsql@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Branch / Tag:
refs/tags/v0.27.5
- Owner: https://github.com/databendlabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com
-
Runner Environment:
github-hosted
-
Publication workflow:
bindings.python.yml@8ac134216ffa7e9d565a184cea1a1e665c899db1
-
Trigger Event:
push
-
Statement type: