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 numerik9876
, di bawah kunci indukUser/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.
- ID —
id
, 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.