Skip to main content

Key-Value Model for Detabase

Project description

PyPI version Downloads Statistic

Key-Value Model for Detabase

API

constructor

class KVModel(dict)

example:

from kv_deta import KVModel 

class Example(KVModel):
  class Config(KVModel.Config):
    deta_key = DETA_BASE_KEY
    # or
    deta = Deta(DETA_BASE_KEY)

    table_name = "my_kv_table"	# optional

    time_to_live = None  #   int seconds from now(). takes precedence over expire!
    expire = None  #   ISO string or int unix timestamp

    hash = my_hash_function	# default lambda x: hashlib.sha256(str(x).encode('utf8')).hexdigest()
kv = Example({"key":"value"})

update

kv.update({"k2":42})

as in dictionary

save

kv.save()

commit all data to detabase

get

mixed dict.get(key) & deta.get(key) & dict.setdefault(key, default)

kv.get(key="some key"[, default="default"])

returns value from deta.get(key) or set it by default if deta.get() returned None

delete

kv.delete(key) -> self

delete key from self & base

keys

kv.keys(param=None) -> List

return list(key)

incr, decr

based on Deta.Base.Util.incremental()

kv.incr(key="counter"[, quantity=1])

returns incremented value for key. if detabase have not specific key, creates it and set value=quantity

query

@classmethod
kv.query(param=criteria, limit=1000, last=None) -> Dict

read

kv.read(param=criteria, limit=1000, last=None) -> self
  • call query() and replaces all data in current model object

Table Struct

field description
key hash(key)
path origin key, hidden field
value data

News

  • v0.2.1, v0.2.2 method delete(), refactor

  • v0.1.23 TTL added

  • v0.1.22 bigint bug is not a bug

    Base currently supports maximum 16 digit numbers (integers and floating points), please store larger numbers as a string.

    • @classmethod query() -> dict by rules. you can search key(s) like an other ordinary fields
    • read() uses query() and replaces all data in current model without creating new dictionary object
  • v0.1.20 methods implementation exchanged incr2 <--> incr

  • bug detected: Deta.Base.Util.incremental() doesn't work with bigint

  • v0.1.18 setup repaired

  • v0.1.17 hotfix

  • v0.1.16 query(), keys()

  • v0.1.15 rename()

  • v0.1.13 backward compatibility broken

  • v0.1.12 incr() rewritten with Deta.Base.Util.incremental()

  • v0.1.11 incr(key: str, quantity=1), decr(key: str, quantity=1): return incr(key, -quantity)

  • v0.1.8 get() fix

  • get(key, default)

  • save()

License

  • It's opensource and free software, see the LICENSE for more details

similar projects

TODO

  • save() refactor
  • del
  • set()
  • TTL
  • incr(), decr()
  • query() return dict
  • rename(key, new_key)
  • keys() get keys list
  • get(key)

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kv_deta-0.2.2.post1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file kv_deta-0.2.2.post1-py3-none-any.whl.

File metadata

  • Download URL: kv_deta-0.2.2.post1-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for kv_deta-0.2.2.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 769ee1262f9437855f830cc12b53511d1efb0c9078dbeb1b159c62d27460e4a2
MD5 e5391dc7c538c99e9d4f72111cd2258e
BLAKE2b-256 2661dacf593c06524ad8ca0a44daf58710039a9255acb5b078af79c8c11c937c

See more details on using hashes here.

Supported by

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