TiKV Client (Python)
This library is a TiKV client in Python; it supports both synchronous and asynchronous API.
It's built on top of TiKV Client in Rust via CFFI and PyO3 Python binding.
This client is still in the stage of prove-of-concept and under heavy development.
Install
This package requires Python 3.6+ and pip 19+. Currently only supports MacOS (x86_64 and aarch64) and Linux in x86_64 with GLibc >= 2.12.
pip3 install tikv-client
Install (Development)
> pip3 install maturin
> maturin build
🍹 Building a mixed python/rust project
🔗 Found pyo3 bindings
🐍 Found CPython 3.8 at python3.8
📦 Built source distribution to /home/andy/Code/client-py/target/wheels/tikv_client-0.1.0.tar.gz
Blocking waiting for file lock on build directory
Compiling pyo3 v0.12.3
Compiling tikv-client v0.1.0 (/home/andy/Code/client-py)
Finished dev [unoptimized + debuginfo] target(s) in 17.62s
📦 Built wheel for CPython 3.8 to /home/andy/Code/client-py/target/wheels/tikv_client-0.1.0-cp38-cp38-manylinux1_x86_64.whl
> pip3 install target/wheels/tikv_client-0.1.0-cp38-cp38-manylinux1_x86_64.whl
Installing collected packages: tikv-client
Successfully installed tikv-client-0.1.0
Example
Python TiKV client is synchronous by defult:
from tikv_client import TransactionClient
client = TransactionClient.connect("127.0.0.1:2379")
txn = client.begin(pessimistic=True)
txn.put(b"k1", b"v1")
txn.put(b"k2", b"v2")
txn.put(b"k3", b"v3")
txn.put(b"k4", b"v4")
txn.put(b"k5", b"v5")
txn.commit()
snapshot = client.snapshot(client.current_timestamp())
print(snapshot.get(b"k3"))
print(snapshot.batch_get([b"k1", b"k4"]))
for k, v in snapshot.scan(b"k1", end=None, limit=10, include_start=False):
print(k, v)
Asynchronous client is available in tikv_client.asynchronous module. Modules and classes under this modules is similar to the synchronous ones.
import asyncio
from tikv_client.asynchronous import TransactionClient
async def main():
client = await TransactionClient.connect("127.0.0.1:2379")
txn = await client.begin(pessimistic=True)
await txn.put(b"k1", b"v1")
await txn.put(b"k2", b"v2")
await txn.put(b"k3", b"v3")
await txn.put(b"k4", b"v4")
await txn.put(b"k5", b"v5")
await txn.commit()
snapshot = client.snapshot(await client.current_timestamp())
print(await snapshot.get(b"k3"))
print(await snapshot.batch_get([b"k1", b"k4"]))
for k, v in await snapshot.scan(b"k1", end=None, limit=10, include_start=False):
print(k, v)
event_loop = asyncio.get_event_loop()
asyncio.get_event_loop().run_until_complete(main())
Metadata
Release files for tikv-client 0.0.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| tikv_client-0.0.4-cp311-none-win_amd64.whl | CPython 3.11 | none | Windows x86-64 | Details |
| tikv_client-0.0.4-cp311-none-win32.whl | CPython 3.11 | none | Windows x86-32 | Details |
| tikv_client-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.17+ x86-64 | Details |
| tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl | CPython 3.11 | CPython 3.11 | macOS 10.12+ x86-64 | Details |
| tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) | Details |
Total release size: 28.2 MB
Release files / tikv_client-0.0.4-cp311-none-win_amd64.whl
| Download URL | tikv_client-0.0.4-cp311-none-win_amd64.whl |
|---|---|
| Size | 4.3 MB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1f29539db0d850bf91672163814a9742bdb78c48325205ba2c3eedf1f7c646b6
|
|
BLAKE2b-256 checksum How to use checksums |
bf0cd197c0c2671e65f62b2b1f2c03292991c782a7fa19b5f5240fcb3c3617b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / tikv_client-0.0.4-cp311-none-win32.whl
| Download URL | tikv_client-0.0.4-cp311-none-win32.whl |
|---|---|
| Size | 3.6 MB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
5922f5b829dab29b00882788a85ee7e26e6f5ae802decc5df62dd67ac8717529
|
|
BLAKE2b-256 checksum How to use checksums |
0423119f6e69557c3b6f3126d83ff7b802b4931d39e053b9b19d2a42f403f827
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / tikv_client-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | tikv_client-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 6.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 |
|
SHA-256 checksum How to use checksums |
e3ff1c4dbd7188fbc8609b5106194042583b164614db344a7ae6204527423341
|
|
BLAKE2b-256 checksum How to use checksums |
25d956e3cb553417aa09b54ab1aa1c034e40f3609f6d741c42750b486dc6f56c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl
| Download URL | tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl |
|---|---|
| Size | 4.6 MB |
| Tags | CPython 3.11 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a1d19c98a4473eabc2357136af3a42089b8bfd73ec350599fe4cc329e7f1e875
|
|
BLAKE2b-256 checksum How to use checksums |
2ee18a67b50bd2ae4e1e714a17535f90f993e56b4d1e3c9afc5449ce8437554f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|
Release files / tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 9.1 MB |
| Tags | CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
ec3b19b43af3a6d7360f67a58dd43cf1dffd86f3c2109ece7c7b3a50f9711188
|
|
BLAKE2b-256 checksum How to use checksums |
6c51f8bf39a2c5ee1227090015a68f3b118deaecf2d9a8ffab8b192339dc17de
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/4.0.2 CPython/3.11.7
|