2011-05-03 3 views
1

저급 Java API에서 런타임시 엔티티 이름을 구성 할 수있었습니다. 파이썬 앱 엔진에서 실행시 최대 엔티티 이름을 만들 수있는 방법이 있나요App Engine - 런타임시 엔티티 이름 지정

class SomeKindaData(db.Expando): 
    pass 

sKD = SomeKindaData(key_name='1') 
... 

: 파이썬에서

, 나 또한 내 개체 이름 클래스 이름을 미리 정의 할 필요가 보인다 ?

답변

3

나는 앱 엔진에 대해 잘 모르겠지만,이 같은 런타임에 클래스를 정의 할 수 있습니다 : 그래서 type이 세 가지 인수 소요

def get_my_class(name): 
    return type(name, (db.Expando,), {}) 

: 클래스의

  • 이름을
  • 을 상속받은 튜플
  • 클래스 속성의 사전
+0

파이썬 3.0에서이 작업을 수행하고 2.x으로하지? –

+0

그것은 Python 2.1에서 작동합니다. – Henry

+0

Oops, Python 2.2 (문서 당) – Henry

2

엔티티 자체에는 이름이 없습니다. 데이터 저장소에서 엔티티는 이름 또는 ID를 가질 수있는 키로 식별됩니다. 샘플 코드에서 엔터티의 키 이름을 "1"로 설정하고 있습니다. 엔티티도 종류별로 분류됩니다 (이 경우 SomeKindaData).

db.Model과 db.Expando는 데이터 저장소 주변의 로컬 ORM 추상화를 제공합니다. 이들을 사용할 때 엔티티의 종류 이름은 기본적으로 모델 클래스 이름으로 설정됩니다. 당신이 엔티티를 작성하기 전에 모델 클래스를 정의하지 않으려면 the low-level datastore API를 사용할 수 있습니다

from google.appengine.api import datastore 

sKD = datastore.Entity(kind='SomeKindaData', name='1') 
sKD['SomeProperty'] = 'SomeValue' 
datastore.Put(sKD) 
+0

그는 종류 이름을 말합니다.이 이름은 엔티티에 포함되어 있습니다. –