Skip to main content

Async, exception-free key-value store ABC. Implementations over SQLAlchemy, the filesystem, Redis, Azure Blob, and more.

Project description

KV

Async, exception-free key-value store ABC. Implementations over SQLAlchemy, the filesystem, Redis, Azure Blob, and more.

pip install python-kv

Usage

from kv import KV

kv = KV.of('sql+sqlite:///path/to/db.sqlite') # easiest way to switch backends: connection strings

await kv.insert('key', 'value') # Left[DBError] | Right[None]
await kv.read('key') # Left[ReadError] | Right['value']
await kv.delete('key') # Left[DBError] | Right[None]
[k async for k in kv.keys()] # list[Left[ReadError] | Right[T]]
[it async for it in kv.items()] # list[Left[ReadError] | Right[tuple[str, T]]]
await kv.clear() # Left[DBError] | Right[None]
# and a few more

Serialization & Validation

from dataclasses import dataclass

@dataclass
class MySerializableType:
  a: int
  b: str

kv = KV.of('sql+sqlite://...', MySerializableType)
await kv.insert('key', MySerializableType(1, '2')) # Left[InvalidData] | Right[None]
# etc.

CLI

kv serve 'file://data' --token "shhhhh" --port 8080 --type dict
kv serve 'sql+postgresql+psycop2g://...' --port 8081 --type str
kv copy -i 'file://data' -o 'sql+sqlite:///path/to/db.sqlite' -v
kv copy -i 'https://my.com/data' -o 'sql+sqlite:///path/to/db.sqlite'
kv test CONN_STR # runs some basic tests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_kv-0.2.8.tar.gz (18.9 kB view details)

Uploaded Source

Built Distribution

python_kv-0.2.8-py3-none-any.whl (28.5 kB view details)

Uploaded Python 3

File details

Details for the file python_kv-0.2.8.tar.gz.

File metadata

  • Download URL: python_kv-0.2.8.tar.gz
  • Upload date:
  • Size: 18.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for python_kv-0.2.8.tar.gz
Algorithm Hash digest
SHA256 9845e08bd6f3fb2ec04a4979d7491e25ce1a331e0809dab43abd4a51fb8e5d29
MD5 34e48a786241acceac72a6d9325c8b72
BLAKE2b-256 668a5d7c7858594733206008683954eef847f4bfed68890db87b0c5a793db4d4

See more details on using hashes here.

File details

Details for the file python_kv-0.2.8-py3-none-any.whl.

File metadata

  • Download URL: python_kv-0.2.8-py3-none-any.whl
  • Upload date:
  • Size: 28.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.9

File hashes

Hashes for python_kv-0.2.8-py3-none-any.whl
Algorithm Hash digest
SHA256 a5222288ae93897b709a1ee425b73fce37b065144171b3040f570dbaa617f1df
MD5 30689bebe12e0f72761f342831b01af6
BLAKE2b-256 7b35c9dc8a195dc6517e12fd9a1c96f2e0e63f8d9620d21c52a041d7dc2415d7

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page