문제

말하자 나는 모델은 다음과 같이

class Foo(db.Model):
    id = db.StringProperty()
    bar = db.StringProperty()
    baz = db.StringProperty()

그리고 나는 a GqlQuery 다음과 같이

foos = db.GqlQuery("SELECT * FROM Foo")

저는 결과의 GqlQuery 으로 어떤 종류의 JSON 하는 문자열 내에서 조작 할 수 있습니다.


여기에 내가 뭘 어떻게 그것을 지금

  1. 추가 방법 Foo 는 클래스로 사전

    def toDict(self):
        return {
             'id': self.id,
             'bar': self.bar,
             'baz': self'baz
           }
    
  2. 루프를 통해 GqlQuery 결과를 수동으로 추가 서 Foo 인스턴스를 사전

    fooDict = {}
    
    for foo in foos:
        fooDict[foo.id] = foo.toDict()
    
    return simplejson.dumps(fooDict)
    

나의 접근을 위에 작동하지만 그것은 종류의 느낌이지요.

은 거기에 더 깨끗하"Pythonic"를 처리하는 방법 이?

최종 형식어야 하지 않는 정확하게 무슨 짓을했다.단지 그것이 뭔가를 변환하는 멋지게 JSON 그래서 나는 그것을 처리 할 수 있는 자바스크립트에서/PHP/무엇입니다.

도움이 되었습니까?

해결책

살펴보 구글이다.애플리케이션.api 를 사용합니다.데이터 저장소.그것은 낮은 수준의 데이터스토어 API 를 구글이다.애플리케이션.ext.db 구축,그리고 그것은 반환 Entity 체는 하위 클래스 dict.쿼리할 수 있습니다 그것을 사용하여 GQL 과 구글이다.애플리케이션.ext.gql, 고,또는(나 개인적인 기본 설정)쿼리를 사용합니스 클래스,피하는 필요성에 대한을 구성하는 텍스트 문자열에 대한 GQL 파서 분석합니다.쿼리 클래스에서는 api 입니다.데이터 저장소와 동일하게 작동합니다나 여기서 설명 (하지만 반환합니다 낮은 수준의 엔터티를 객체를 인스턴스 모델).

예를 들어,위의 질의할 수 있습 reformulated 로"데이터 저장소.Query("Foo").모든()".

다른 팁

나는 그것보다 훨씬 더 잘할 수 없지만 여기에 몇 가지 아이디어가 있습니다.

class Foo:
    id = db.StringProperty() # etc.
    json_attrs = 'id bar baz'.split()

# Depending on how easy it is to identify string properties, there
# might also be a way to assign json_attrs programmatically after the
# definition of Foo, like this
Foo.json_attrs = [attr for attr in dir(Foo)
                  if isStringProperty(getattr(Foo, attr))]

fooDict=dict((foo.id,dict(getattr(foo, attr)
                          for attr in Foo.json_attrs))
              for foo in foos)

http://code.google.com/p/google-app-engine-samples/source/browse/trunk/geochat/json.py?r=55

인코더 방법은 GQL-To-JSON이 필요로합니다. 과도한 DateTime 옵션을 제거하는 것이 좋습니다 .... Epoch로서의 시간? 진짜?

gae에서 web2py를 사용할 수 있습니다.

db.define_table('foo',SQLField('bar'),SQLField('baz'))
rows=db(db.foo.id>0).select()
### rows is a list, rows.response is a list of tuples
for row in rows: print  dict(row)

Oracle, PostgreSQL, MSSQL, MySQL 등으로 실행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top