假设我有这样一个模特
class Foo(db.Model):
id = db.StringProperty()
bar = db.StringProperty()
baz = db.StringProperty()我要做一个像这样的GqlQuery
foos = db.GqlQuery("SELECT * FROM Foo")--我想获取GqlQuery的结果,并将其转化为某种可以从不同语言中操作的JSON字符串。
我现在就是这么做的
我的方法是可行的,但感觉有点恶心。
有没有更干净,更“毕多尼”的方法来处理这件事?
--结束格式不一定就是我上面所做的。它必须能很好地转换成JSON,这样我就可以通过Javascript/PHP/任何东西来处理它。
发布于 2008-10-17 15:37:18
看看google.appengine.api.datastore。它是google.appengine.ext.db构建的底层数据存储API,它返回实体对象,子类dict。您可以使用带有google.appengine.ext.gql的GQL查询它,或者(我个人的偏好)使用查询类,这避免了为GQL解析器构造文本字符串的需要。api.datastore中的查询类的行为与记录在这里完全一样(但是返回较低级别的实体对象而不是模型实例)。
例如,可以将上面的查询重新表示为"datastore.Query("Foo").all()“。
发布于 2008-10-17 14:21:25
我不能做得比这更好,但这里有几个想法:
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)发布于 2008-10-18 08:41:26
http://code.google.com/p/google-app-engine-samples/source/browse/trunk/geochat/json.py?r=55
编码器方法将很好地解决的需求。我建议把过多的约会时间options....out时间作为一个时代来处理?真的?
https://stackoverflow.com/questions/212125
复制相似问题