Class Kunci

Catatan: Developer yang membuat aplikasi baru sangat dianjurkan untuk menggunakan Library Klien NDB, yang memiliki beberapa manfaat dibandingkan dengan library klien ini, seperti caching entity otomatis melalui Memcache API. Jika saat ini Anda menggunakan Library Klien DB yang lebih lama, baca Panduan Migrasi DB ke NDB

Instance Class kunci merepresentasikan kunci unik untuk entity Datastore.

Key disediakan oleh modul google.appengine.ext.db.

Pengantar

Setiap instance model memiliki kunci ID, yang mencakup jenis entity instance serta ID unik. ID dapat berupa string nama kunci, yang ditetapkan secara eksplisit oleh aplikasi saat instance dibuat, atau ID numerik bilangan bulat, yang ditetapkan secara otomatis oleh App Engine saat instance ditulis (put) ke Datastore. Metode key() instance model menampilkan objek Key untuk instance tersebut. Jika instance belum diberi kunci, key() akan memunculkan NotSavedError.

Aplikasi dapat mengambil instance model untuk Kunci tertentu menggunakan fungsi get().

Instance kunci dapat berupa nilai untuk properti entity Datastore, termasuk properti dinamis Expando dan anggota ListProperty. Model ReferenceProperty menyediakan fitur untuk nilai properti Kunci seperti dereferensi otomatis.

Konstruktor

class Key(encoded=None)

Kunci unik untuk objek Datastore.

Kunci dapat dikonversi menjadi string dengan meneruskan objek Kunci ke str(). String ini bersifat "urlsafe"—string ini hanya menggunakan karakter yang valid untuk digunakan dalam URL. Representasi string kunci ini dapat dikonversi kembali ke objek Kunci dengan meneruskannya ke konstruktor Kunci (argumen dienkode).

Catatan: Representasi string dari sebuah kunci akan tampak samar, tetapi tidak dienkripsi! File ini dapat dikonversi kembali menjadi data kunci mentah, baik jenis maupun ID. Jika tidak ingin mengekspos data ini kepada pengguna (dan memungkinkan mereka menebak kunci entity lain dengan mudah), enkripsi string ini atau gunakan string lain.

encoded
Bentuk str dari instance Kunci untuk dikonversi kembali menjadi Kunci.

Metode Class

Class kunci menyediakan metode class berikut:

Key.from_path(*path, parent=None, namespace=None)

Membuat objek Kunci baru dari jalur ancestor (opsional) (dalam objek Kunci yang ada), dan satu atau beberapa komponen jalur baru. Setiap komponen jalur terdiri dari Nama jenis (kind) dan ID (id_or_name), yang berupa angka atau string karakter.

Jalur mewakili hierarki hubungan induk-turunan untuk suatu entity. Setiap entity dalam jalur diwakili oleh jenis entity, dan ID numerik atau nama kuncinya. Jalur lengkap mewakili entity yang muncul terakhir di jalur, dengan ancestor-nya (induk) sebagai entity sebelumnya.

Misalnya, panggilan berikut akan membuat Kunci untuk entity jenis Address dengan ID numerik 9876, di bawah kunci induk User/Boris:

k = Key.from_path('User', 'Boris', 'Address', 9876)

Cara alternatif untuk membuat Kunci yang sama adalah sebagai berikut:

p1 = Key.from_path('User', 'Boris')
k = Key.from_path('Address', 9876, parent=p1)

Untuk mengetahui informasi selengkapnya tentang jalur, lihat halaman Entity, Properti, dan Kunci.

Argumen

path
Daftar berisi satu atau beberapa komponen jalur ancestor, dengan setiap komponen terdiri dari jenis dan ID:
  • jenis — Jenis entity, yang direpresentasikan sebagai string atau string Unicode.
  • IDid, ditentukan sebagai string atau panjang. Tidak boleh berupa angka 0.
namespace=None
Namespace yang akan ditetapkan untuk Kunci ini saja. Jika Anda menyediakan namespace di sini, namespace yang saat ini ditetapkan di namespace_manager akan diganti. Jika None, API akan menggunakan namespace dari namespace_manager.get_namespace saat ini.
parent=None
Tombol induk opsional. Jika tidak diberikan, setelan defaultnya adalah None.

Metode Instance

Instance kunci memiliki metode berikut:

app()

Menampilkan nama aplikasi yang menyimpan entity data.

has_id_or_name()

Menampilkan True jika entity memiliki nama atau ID numerik.

id()

Menampilkan ID numerik entity data, sebagai bilangan bulat, atau None jika entity tidak memiliki ID numerik.

id_or_name()

Menampilkan nama atau ID numerik entity data, mana pun yang dimilikinya, atau None jika entity tersebut tidak memiliki nama atau ID numerik.

kind()

Menampilkan jenis entity data, sebagai string.

name()

Menampilkan nama entity data, atau None jika entity tidak memiliki nama.

namespace()

Menampilkan namespace entity data. Jika entity tidak memiliki namespace terkini, metode ini akan menampilkan namespace yang saat ini ditetapkan dalam namespace_manager.

parent()

Menampilkan Kunci induk entity dari entity data, atau None jika entity tidak memiliki induk.