# TiKV Client (Python)
![Publish](https://github.com/tikv/client-py/workflows/Publish/badge.svg)
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](https://github.com/tikv/client-rust) via
CFFI and [PyO3 Python binding](https://github.com/PyO3/pyo3).
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:
```python
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.
```python
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())
```
Raw data
{
"_id": null,
"home_page": "",
"name": "tikv-client",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "Andy Lok <andylokandy@hotmail.com>",
"keywords": "TiKV",
"author": "Andy Lok <andylokandy@hotmail.com>",
"author_email": "Andy Lok <andylokandy@hotmail.com>",
"download_url": "",
"platform": null,
"description": "# TiKV Client (Python)\n\n![Publish](https://github.com/tikv/client-py/workflows/Publish/badge.svg)\n\nThis library is a TiKV client in Python; it supports both synchronous and asynchronous API.\n\nIt's built on top of\n[TiKV Client in Rust](https://github.com/tikv/client-rust) via\nCFFI and [PyO3 Python binding](https://github.com/PyO3/pyo3).\n\nThis client is still in the stage of prove-of-concept and under heavy development.\n\n## Install\n\nThis 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.\n\n```\npip3 install tikv-client\n```\n\n## Install (Development)\n\n```\n> pip3 install maturin\n\n> maturin build\n\ud83c\udf79 Building a mixed python/rust project\n\ud83d\udd17 Found pyo3 bindings\n\ud83d\udc0d Found CPython 3.8 at python3.8\n\ud83d\udce6 Built source distribution to /home/andy/Code/client-py/target/wheels/tikv_client-0.1.0.tar.gz\n Blocking waiting for file lock on build directory\n Compiling pyo3 v0.12.3\n Compiling tikv-client v0.1.0 (/home/andy/Code/client-py)\n Finished dev [unoptimized + debuginfo] target(s) in 17.62s\n\ud83d\udce6 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\n\n> pip3 install target/wheels/tikv_client-0.1.0-cp38-cp38-manylinux1_x86_64.whl\nInstalling collected packages: tikv-client\nSuccessfully installed tikv-client-0.1.0\n```\n\n## Example\n\nPython TiKV client is synchronous by defult:\n\n```python\nfrom tikv_client import TransactionClient\n\nclient = TransactionClient.connect(\"127.0.0.1:2379\")\n\ntxn = client.begin(pessimistic=True)\ntxn.put(b\"k1\", b\"v1\")\ntxn.put(b\"k2\", b\"v2\")\ntxn.put(b\"k3\", b\"v3\")\ntxn.put(b\"k4\", b\"v4\")\ntxn.put(b\"k5\", b\"v5\")\ntxn.commit()\n\nsnapshot = client.snapshot(client.current_timestamp())\nprint(snapshot.get(b\"k3\"))\nprint(snapshot.batch_get([b\"k1\", b\"k4\"]))\n\nfor k, v in snapshot.scan(b\"k1\", end=None, limit=10, include_start=False):\n print(k, v)\n```\n\nAsynchronous client is available in `tikv_client.asynchronous` module. Modules and classes under this modules is similar to the synchronous ones.\n\n```python\nimport asyncio\nfrom tikv_client.asynchronous import TransactionClient\n\nasync def main():\n client = await TransactionClient.connect(\"127.0.0.1:2379\")\n\n txn = await client.begin(pessimistic=True)\n await txn.put(b\"k1\", b\"v1\")\n await txn.put(b\"k2\", b\"v2\")\n await txn.put(b\"k3\", b\"v3\")\n await txn.put(b\"k4\", b\"v4\")\n await txn.put(b\"k5\", b\"v5\")\n await txn.commit()\n\n snapshot = client.snapshot(await client.current_timestamp())\n print(await snapshot.get(b\"k3\"))\n print(await snapshot.batch_get([b\"k1\", b\"k4\"]))\n\n for k, v in await snapshot.scan(b\"k1\", end=None, limit=10, include_start=False):\n print(k, v)\n\nevent_loop = asyncio.get_event_loop()\nasyncio.get_event_loop().run_until_complete(main())\n```\n\n",
"bugtrack_url": null,
"license": "",
"summary": "TiKV Client for Python",
"version": "0.0.4",
"project_urls": null,
"split_keywords": [
"tikv"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "6c51f8bf39a2c5ee1227090015a68f3b118deaecf2d9a8ffab8b192339dc17de",
"md5": "de51004e12433378b2a47d5d6ea41166",
"sha256": "ec3b19b43af3a6d7360f67a58dd43cf1dffd86f3c2109ece7c7b3a50f9711188"
},
"downloads": -1,
"filename": "tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
"has_sig": false,
"md5_digest": "de51004e12433378b2a47d5d6ea41166",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 9053999,
"upload_time": "2024-01-17T02:04:43",
"upload_time_iso_8601": "2024-01-17T02:04:43.846397Z",
"url": "https://files.pythonhosted.org/packages/6c/51/f8bf39a2c5ee1227090015a68f3b118deaecf2d9a8ffab8b192339dc17de/tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2ee18a67b50bd2ae4e1e714a17535f90f993e56b4d1e3c9afc5449ce8437554f",
"md5": "e8b6ee043a0757ac23e9cbbb63c509e6",
"sha256": "a1d19c98a4473eabc2357136af3a42089b8bfd73ec350599fe4cc329e7f1e875"
},
"downloads": -1,
"filename": "tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl",
"has_sig": false,
"md5_digest": "e8b6ee043a0757ac23e9cbbb63c509e6",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 4595638,
"upload_time": "2024-01-17T02:04:47",
"upload_time_iso_8601": "2024-01-17T02:04:47.108951Z",
"url": "https://files.pythonhosted.org/packages/2e/e1/8a67b50bd2ae4e1e714a17535f90f993e56b4d1e3c9afc5449ce8437554f/tikv_client-0.0.4-cp311-cp311-macosx_10_12_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "25d956e3cb553417aa09b54ab1aa1c034e40f3609f6d741c42750b486dc6f56c",
"md5": "d1082da9f008f748ac3a0c3f725eeb0c",
"sha256": "e3ff1c4dbd7188fbc8609b5106194042583b164614db344a7ae6204527423341"
},
"downloads": -1,
"filename": "tikv_client-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"has_sig": false,
"md5_digest": "d1082da9f008f748ac3a0c3f725eeb0c",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 6701394,
"upload_time": "2024-01-17T02:04:50",
"upload_time_iso_8601": "2024-01-17T02:04:50.069450Z",
"url": "https://files.pythonhosted.org/packages/25/d9/56e3cb553417aa09b54ab1aa1c034e40f3609f6d741c42750b486dc6f56c/tikv_client-0.0.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "0423119f6e69557c3b6f3126d83ff7b802b4931d39e053b9b19d2a42f403f827",
"md5": "0a7cc99cf4fc5c6e075bbb840a1c0070",
"sha256": "5922f5b829dab29b00882788a85ee7e26e6f5ae802decc5df62dd67ac8717529"
},
"downloads": -1,
"filename": "tikv_client-0.0.4-cp311-none-win32.whl",
"has_sig": false,
"md5_digest": "0a7cc99cf4fc5c6e075bbb840a1c0070",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 3579741,
"upload_time": "2024-01-17T02:04:51",
"upload_time_iso_8601": "2024-01-17T02:04:51.862534Z",
"url": "https://files.pythonhosted.org/packages/04/23/119f6e69557c3b6f3126d83ff7b802b4931d39e053b9b19d2a42f403f827/tikv_client-0.0.4-cp311-none-win32.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bf0cd197c0c2671e65f62b2b1f2c03292991c782a7fa19b5f5240fcb3c3617b5",
"md5": "e9e2fc5f1dcbaefb5b651db355e8ad9d",
"sha256": "1f29539db0d850bf91672163814a9742bdb78c48325205ba2c3eedf1f7c646b6"
},
"downloads": -1,
"filename": "tikv_client-0.0.4-cp311-none-win_amd64.whl",
"has_sig": false,
"md5_digest": "e9e2fc5f1dcbaefb5b651db355e8ad9d",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.6",
"size": 4303600,
"upload_time": "2024-01-17T02:04:54",
"upload_time_iso_8601": "2024-01-17T02:04:54.336823Z",
"url": "https://files.pythonhosted.org/packages/bf/0c/d197c0c2671e65f62b2b1f2c03292991c782a7fa19b5f5240fcb3c3617b5/tikv_client-0.0.4-cp311-none-win_amd64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-17 02:04:43",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "tikv-client"
}