使用python优化导入方法
对于导入,我需要向MyClassA实例添加大量出价使用python优化导入方法,python,google-app-engine,Python,Google App Engine,对于导入,我需要向MyClassA实例添加大量出价 foos = json.loads(self.request.get('foos')) for foo in foos : a = MyClassA() a.id = foo["id"] a.name = foo["name"] for bId in foo["stringWithAllBidsForA"].split(";") : tmp = B.gql("WH
foos = json.loads(self.request.get('foos'))
for foo in foos :
a = MyClassA()
a.id = foo["id"]
a.name = foo["name"]
for bId in foo["stringWithAllBidsForA"].split(";") :
tmp = B.gql("WHERE id = '"+bId +"'").get()
if tmp :
a.bList.append(tmp.key())
a.put()
我确信这是懒惰的,但是我如何优化代码呢
我想在B的id字段中添加(indexed=True),并且只为bgql查询和批处理数据存储put输入键。
但我不知道怎么做
编辑:
我将b.id=bId替换为b=MyClassB(key\u name=bId)
所以现在我要:
a.bList.append( foo["stringWithAllBidsForA"].split(";"))
我遇到了编码问题,把str转换成我试过的键
使用encoded=foo[“stringWithAllBidsForA”]。拆分(“;”)[0]
怎么了?无法解码>拆分>转换为键。如果在存储
B
实例时使用key\u name=bId
而不是单独的id
索引属性,则应该能够使用
您还可以使用
Model.get_by_key_name(id列表)是否与key only兼容?我该如何称呼它?
get_by_key_name
获取一个键名列表,它相当于特定实体类型的db.get
。您确定只获取键名,因为在文档中写着:“获取模型实例(或实例)”对于给定的键名(或名称)”,它获取相应的实体,给出键名列表。键只对那些事先不知道键的查询有意义。如果你已经知道钥匙了,就不必去拿了:)今晚我会试试你的解决方案,到时候我会验证它的有效性。
Model.get_by_key_name(list_of_b_ids)
db.put(list_of_a_models)