Kivy - 儲存



Kivy 框架中的 Storage 類用於透過索引條目載入和儲存任意數量的鍵值對。“kivy.storage” 模組定義了 AbstractStore 類。其實現——**DictStore、JsonStore** 和 **RedisStore**——提供了具體的類。

  • kivy.storage.dictstore.DictStore:使用 Python 字典作為儲存。

  • kivy.storage.jsonstore.JsonStore:使用 JSON 檔案作為儲存。

  • kivy.storage.redisstore.RedisStore:使用帶有 redis-py 的 Redis 資料庫。

要使用以上任何儲存類,請匯入相關的類,宣告一個物件並呼叫其 put() 方法來儲存鍵值對。對於 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 是鍵值對的字典。

  • **get(key)** - 獲取儲存在 key 處的鍵值對。如果找不到該鍵,則會丟擲 KeyError 異常。

  • **keys()** - 返回儲存中所有鍵的列表。

  • **put(key, **values)** - 將新的鍵值對(在 values 中給出)放入儲存中。任何現有的鍵值對都將被刪除。

這些方法 (get()、put()、exists()、delete()、find()) 都有非同步版本。這些方法可以帶或不帶回調引數呼叫。如果給出回撥引數,則請求將是非同步的,回撥會在結果可用時將其返回給使用者。如果回撥為 None,則請求將是同步的,結果將直接返回。

示例

這是一個示例:

# synchronous
res=store.get(key)
print (res)

# asynchronous
def my_callback(store, key, result):
   print (result)
   
store.get(key) 

回撥函式應具有以下引數:

  • **store** - 當前使用的 'Store' 例項。

  • **key** - 要查詢的鍵。

  • **result** - 鍵查詢的結果。

示例

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]))

輸出

它將產生以下輸出:

Population of Maharashtra is Eleven Cr
dict_keys(['name', 'capital', 'population'])
name : Maharashtra
capital : Mumbai
population : Eleven Cr
Store: shape
K-V pairs: {'type': 'circle', 'radius': 5}
廣告
© . All rights reserved.