Key-Value Model for Detabase
Project description
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
- return dict(key:value)
- query param see also https://deta.space/docs/en/build/reference/deta-base/queries
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() -> dictby rules. you can search key(s) like an other ordinary fieldsread()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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
769ee1262f9437855f830cc12b53511d1efb0c9078dbeb1b159c62d27460e4a2
|
|
| MD5 |
e5391dc7c538c99e9d4f72111cd2258e
|
|
| BLAKE2b-256 |
2661dacf593c06524ad8ca0a44daf58710039a9255acb5b078af79c8c11c937c
|