2014-03-06 42 views
1

我有beatbox与SFDC开发人员帐户很好地协作。我正在推动Salesforce创建自定义对象,但一次只更新一个。有没有办法一次推送200次更改以限制我所做的api调用数量?Beatbox/Python - 在更新Salesforce中的多个记录时遇到问题

我运行的脚本下载了一批线索,然后通过new_Alert()处理它们,然后逐个上传它们,所以我很快就打开了我的api限制。

以下是我正在运行的两个脚本,我已经删除了大部分“工作”,以使其更容易阅读。

def new_Alert(id1,login,pw): 
    svc = beatbox.Client() 
    svc.login(login, pw) 
     object_dict = { 
     'type': 'new_Alert', 
     'Lead__c': str(id1) } 
     results = svc.create(object_dict) 
     print results 


def pushAlerts(login,pw): 
    sf = beatbox._tPartnerNS 
    svc = beatbox.Client() 
    svc.login(login, pw) 
    qr = svc.query("select Id, OwnerId from Lead") 

    for rec in qr[sf.records:]: 
     type = rec[0] 
     id1 = rec[1] 
     owner = rec[2] 
     new_Alert(type,id1,login) 
    while (str(qr[sf.done]) == 'false'): 
     qr = svc.queryMore(str(qr[sf.queryLocator])) 
     for rec in qr[sf.records:]: 
      type = rec[0] 
      id1 = rec[1] 
      new_Alert(type,id1,login) 

回答

1

create功能,最多需要200条(字典)的列表,你只要累积起来,一旦你已经收集了200

以下是创建2帐户的例子发送一批立即记录并检查结果。

def create(self): 
    a = { 'type': 'Account', 
     'Name': 'New Account', 
     'Website': 'http://www.pocketsoap.com/' } 
    b = { 'type' : 'Account', 
     'Name' : 'Another account', 
     'Website' : 'https://github.com/superfell/Beatbox' } 

    sr = svc.create([a,b]) 

    self.printresult(sr[0]) 
    self.printresult(sr[1]) 

def printresult(self, sr): 
    if str(sr[sf.success]) == 'true': 
     print "id " + str(sr[sf.id]) 
    else: 
     print "error " + str(sr[sf.errors][sf.statusCode]) + ":" + str(sr[sf.errors][sf.message]) 
+0

会是什么样子? – kmomo