NDB 金鑰類別

Key 類別的執行個體代表不變的 Datastore 金鑰。

本頁包含 API 的參考說明文件。如需概要說明,請參閱 NDB 實體和金鑰

簡介

Key 是一個不變的 Datastore 金鑰。應用程式通常使用金鑰以參照實體。每一個儲存的實體皆擁有一個金鑰。. 若要取得實體的金鑰,請使用模型的金鑰屬性。若需從該金鑰中擷取實體,請呼叫 Key 物件的 get() 方法。

Key 能夠進行比較,例如 key1 == key2key1 < key2。 這些運算可以拿來比較應用程式 ID、命名空間、以及完整的祖系路徑。當要依照金鑰屬性或金鑰進行排序時,與 Datasore 進行查詢時使用的排序相同。

repr(key)str(key) 會傳回類似於最短建構函式之型式來表示字串,且省略應用程式和命名空間,除非其與預設值不同。

hash(key) 有效。因此,您可以將金鑰儲存在雜湊表中。

建構函式

為了更為彈性及便利,系統支援多個建構函式簽章。

class Key(kind1, id1, kind2, id2, ...)
class Key(pairs=[(kind1, id1), (kind2, id2), ...])
class Key(flat=[kind1, id1, kind2, id2, ...])
class Key(urlsafe=string)

位置引數 kind1, id1, kind2, id2... 依據「祖系」排序 (這是以下字串的捷徑: flat=[kind1, id1, kind2, id2]) 父項排在子項前面。

位置引數、pairs、以及 flat 建構函式可以使用「parent=key」傳入另一個金鑰。 (kind, id) 這對父項金鑰很確定地被安插在 (kind, id) 之前。

urlsafe 關鍵字引數使用「websafe-base64-encoded」編碼之序列化引用,但是最好將其視為不透明且唯一的字串。

其他建構函式關鍵字引數:

應用程式
指定應用程式 id (字串)
命名空間
指定命名空間 (字串)

不影響 Datastore 的範例方法

使用以下方法存取金鑰的內容,這些方法不涉及 Datastore 的 I/O 活動。

pairs()。

傳回 (kind, id) 的組合。

flat()

傳回整併種類的組合以及 id 值 (kind1, id1, kind2, id2, ...)。

app()

傳回應用程式 id。

id()

傳回最後一個 (kind, id) 組合中的字串或整數型態 id, 若金鑰不完整則傳回 None

string_id()

傳回最後一個 (kind, id) 組合的字串 id, 若金鑰有整數型態 id 或不完整時則傳回 None

integer_id()

傳回最後一個 (kind, id) 組合中的整數型 id, 若金鑰有字串型 id 或不完整時則傳回 None

namespace()

傳回命名空間。

kind()

傳回最後一個 (kind, id) 組合的種類。

parent()

傳回除了最後一個 (kind, id) 組合的所有 Key 建構函式 (若金鑰僅有一個 (kind, id) 組合則傳回 None)。

urlsafe()

傳回金鑰的「websafe-base64-encoded」編碼序列化版本。

附註: 安全 URL 字串雖然看似為隱密內容,但實際上未經加密!其很容易就會被解碼,並恢復原本的實體種類及 ID。

to_old_key()

傳回「舊」Datastore API (Key) 的 db

影響 Datastore 的範例方法

這些方法與 Datastore 的互動。

get(**ctx_options)

傳回 Key 的實體。

引數

**ctx_options
內容選項
get_async(**ctx_options)

傳回 Future 其最終結果為 Key 的實體。

引數

**ctx_options
內容選項
delete(**ctx_options)

刪除 Key 的實體。

引數

**ctx_options
內容選項
delete_async(**ctx_options)

非同步刪除 Key 的實體。

引數

**ctx_options
內容選項

類別方法

from_old_key(k)

從傳入的「舊」Datastore API (db) Key 傳回 NDB 金鑰。

引數

**ctx_options
內容選項
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 2 適用的 App Engine 標準環境