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

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

Uploaded Python 3

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