Key 클래스

참고: 새로운 애플리케이션을 빌드하는 개발자는 NDB 클라이언트 라이브러리를 사용하는 것이 좋습니다. NDB 클라이언트 라이브러리는 이 클라이언트 라이브러리와 비교할 때 Memcache API를 통한 자동 항목 캐싱과 같은 여러 이점이 있습니다. 현재 이전 DB 클라이언트 라이브러리를 사용 중인 경우 DB에서 NDB로의 마이그레이션 가이드를 참조하세요.

Key 클래스의 인스턴스는 데이터 저장소 항목의 고유 키를 나타냅니다.

Keygoogle.appengine.ext.db 모듈에서 제공됩니다.

소개

모든 모델 인스턴스에는 인스턴스의 항목 종류와 고유 식별자가 포함된 식별 가 있습니다. 식별자는 인스턴스가 생성될 때 애플리케이션에서 명시적으로 할당하는 키 이름 문자열이거나 인스턴스가 Datastore에 기록(put)될 때 App Engine에서 자동으로 할당한 정수 숫자 ID일 수 있습니다. 모델 인스턴스의 key() 메서드는 인스턴스의 Key 객체를 반환합니다. 인스턴스에 아직 키가 할당되지 않았으면 key() NotSavedError를 발생시킵니다.

애플리케이션은 get() 함수를 사용하여 해당 Key의 모델 인스턴스를 검색할 수 있습니다.

Key 인스턴스는 Expando 동적 속성 및 ListProperty 구성원을 비롯한 Datastore 항목 속성의 값일 수 있습니다. ReferenceProperty 모델은 자동 참조 해제 등 Key 속성 값을 위한 기능을 제공합니다.

생성자

class Key(encoded=None)

Datastore 객체의 고유 키입니다.

키 객체를 str()에 전달하여 키를 문자열로 변환할 수 있습니다. 문자열은 'urlsafe'입니다. 즉, URL에서 사용할 수 있는 유효 문자만 사용합니다. 키의 문자열 표현을 키 생성자(인코딩된 인수)에 전달하면 키 객체로 다시 변환할 수 있습니다.

참고: 키의 문자열 표현은 암호화된 것처럼 보이지만 실제로는 그렇지 않습니다. 종류와 식별자 모두 원시 키 데이터로 다시 변환될 수 있습니다. 이 데이터가 사용자에게 노출되는 것(그리고 사용자들이 다른 항목의 키를 쉽게 유추하는 것)을 원치 않으면 해당 문자열을 암호화하거나 다른 생성자를 사용하세요.

encoded
키로 다시 변환할 키 인스턴스의 str 형식입니다.

클래스 메서드

Key 클래스는 다음의 클래스 메서드를 제공합니다.

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

기존 Key 객체에 있는 상위 경로(선택사항)에서 새 Key 객체를 빌드하고, 하나 이상의 새로운 경로 구성요소를 빌드합니다. 각 경로 구성요소는 종류 이름(kind)과 식별자(id_or_name)로 구성됩니다. 식별자는 숫자 또는 문자열입니다.

경로는 항목의 상위-하위 관계 계층구조를 나타냅니다. 경로에 있는 각 항목은 항목의 종류 그리고 해당 숫자 ID나 키 이름을 통해 표현됩니다. 전체 경로는 경로에서 마지막에 나타나는 항목을 나타내며, 상위 항목들은 이전 항목으로 표현됩니다.

예를 들어 다음 호출은 상위 키 User/Boris의 숫자 ID가 9876Address 종류의 항목에 대한 키를 만듭니다.

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

같은 Key를 만드는 다른 방법은 다음과 같습니다.

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

경로에 대한 자세한 내용은 항목, 속성, 키 페이지를 참조하세요.

인수

경로
상위 경로 구성요소 한 개 이상이 포함된 목록으로, 각 구성요소는 종류식별자로 구성됩니다.
  • 종류 — 문자열 또는 유니코드 문자열로 표현되는 항목 종류입니다.
  • 식별자 — 문자열 또는 long으로 지정되는 id입니다. 숫자 0일 수는 없습니다.
namespace=None
이 Key에만 설정할 네임스페이스입니다. 여기에 제공된 네임스페이스는 namespace_manager에 현재 설정된 네임스페이스를 재정의합니다. None일 경우, API는 namespace_manager.get_namespace의 현재 네임스페이스를 사용합니다.
parent=None
선택사항인 상위 키입니다. 제공되지 않으면 기본값은 None입니다.

인스턴스 메서드

Key 인스턴스에는 다음과 같은 메서드가 있습니다.

app()

데이터 항목을 저장한 애플리케이션의 이름을 반환합니다.

has_id_or_name()

항목에 이름 또는 숫자 ID가 있으면 True를 반환합니다.

id()

데이터 항목의 숫자 ID를 정수로 반환하거나, 항목에 숫자 ID가없는 경우 None을 반환합니다.

id_or_name()

데이터 항목의 이름 또는 숫자 ID를 반환하거나, 항목에 이름이나 숫자 ID가없는 경우 None을 반환합니다.

kind()

데이터 항목의 종류를 문자열로 반환합니다.

name()

데이터 항목의 이름, 또는 항목에 이름이 없는 경우 None을 반환합니다.

namespace()

데이터 항목의 네임스페이스를 반환합니다. 항목에 현재 네임스페이스가 없는 경우 이 메서드는 namespace_manager에 설정된 현재 네임스페이스를 반환합니다.

parent()

데이터 항목의 상위 항목 Key를 반환하거나, 항목에 상위 항목이 없는 경우 None을 반환합니다.