Kivy 简明教程
Kivy - Storage
Kivy 框架中的 Storage 类用于通过索引条目加载和存储任意数量的键值对。“kivy.storage”模块定义了 AbstractStore 类。它的实现 DictStore, JsonStore 和 RedisStore - 提供了具体类。
-
kivy.storage.dictstore.DictStore:将 python dict 用作存储。
-
kivy.storage.jsonstore.JsonStore:将 JSON 文件用作存储。
-
kivy.storage.redisstore.RedisStore:使用带有 redis-py 的 Redis 数据库。
要使用任何上述存储类,请导入相关类,声明一个对象并调用其 put() 方法来存储 k-v 对。JsonStore −
from kivy.storage.jsonstore import JsonStore
store = JsonStore('hello.json')
# put some values
store.put(name, key1=val1, key2=val2)
这将在当前目录中创建 hello.json 文件。您可以使用 get() 方法检索信息。
print (store.get(name)[key])
下述方法定义在 AbstractStore 类中,需要由 DictStore 等具体实现重写−
-
clear() − 清除整个存储。
-
count() − 返回存储中的条目数。
-
delete(key) − 从存储中删除一个键。如果未找到键,将引发 KeyError 异常。
-
exists(key) − 检查键是否在存储中存在。
-
find( filters) − 返回与过滤器匹配的所有条目。条目通过将 (key, entry) 对作为列表的生成器返回,其中 entry 为键值对的 dict。
-
get(key) − 获取存储在键中的键值对。如果未找到键,将引发 KeyError 异常。
-
keys() − 返回存储中所有键的列表。
-
put(key, **values) − 将新的键值对 (在 values 中给出) 放入存储中。任何现有的键值对将被移除。
get()、put()、exists()、delete()、find() 方法具有异步版本。这些方法可以在有或没有回调参数的情况下调用。如果给定,回调在可用时将结果返回给用户,因为请求将是异步的。如果回调为 None,则请求将同步并且直接返回结果。
Example
示例如下:
# synchronous
res=store.get(key)
print (res)
# asynchronous
def my_callback(store, key, result):
print (result)
store.get(key)
回调函数应具有以下参数−
-
store − 当前使用的“Store”实例。
-
key − 所寻求的键。
-
result − 键查找的结果。
Example
from kivy.storage.jsonstore import JsonStore
from kivy.storage.dictstore import DictStore
store = JsonStore('store.json')
# put some values
store.put('state', name='Maharashtra', capital='Mumbai',
population='Eleven Cr')
store.put('os', name='Windows', version=11, released=2021)
store.put('shape', type='circle', radius=5)
# using the same index key erases all previously added k-v pairs
# get a value using a index key and key
print('Population of ', store.get('state')['name'], 'is ',
store.get('state')['population'])
print (store.get('state').keys())
for k,v in store.get('state').items():
print (k,":",v)
# or guess the key/entry for a part of the key
for item in store.find(type='circle'):
print('Store:',item[0])
print('K-V pairs: ',str(item[1]))