使用python优化导入方法

使用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

对于导入,我需要向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("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)