我的项目是提取所有salesforce表的内容,包括自定义的表。为此,我需要知道列(字段)的名称,因为SOQL不支持"SELECT * from TABLENAME“。
使用simple-salesforce,我知道以下是可行的:
sf = Salesforce(username='foo@bar.com', password='abcd', security_token='ZCdsdPdE4eI2DZMl5gwCFIGEFU')
field_data = sf.Contact.describe()["fields"]但我的问题是,我需要在上面的实际方法调用中参数化"Contact“字符串,这样我就可以为我不知道名称的对象调用这个方法(即没有在标准的salesforce中定义)。例如,我需要做的是:
field_data = sf.CustomTableName.describe()["fields"]当我尝试使用SFType类时:
contact = SFType('Contact',sf.sessionid,sf.sf_instance)
f = contact.describe()我得到了这个错误:
Traceback (most recent call last):
File "./simple-example.py", line 13, in <module>
f = contact.describe()["fields"]
File "/Library/Python/2.7/site-packages/simple_salesforce/api.py", line 430, in describe
result = self._call_salesforce('GET', self.base_url + 'describe')
File "/Library/Python/2.7/site-packages/simple_salesforce/api.py", line 570, in _call_salesforce
'Authorization': 'Bearer ' + self.session_id,
TypeError: cannot concatenate 'str' and 'SFType' objects提前感谢您的建议。
发布于 2015-11-13 11:06:14
如果您查看source code for simple-salesforce (截至2015-11-12),您将看到在Salesforce()的init()中,我们将会话设置为self.session_id,将实例设置为self.sf_instance
在本例中,您使用的是sf.sessionid,并且由于simple-salesforce被设置为每当Salesforce()上不存在方法或属性时返回SFType()对象(而sessionid在Salesforce()上也不存在),因此您实际上是在将SFType()对象插入到SFType()的初始化中
SFType.__init__()不会执行任何形式的验证来确认您是否将字符串作为参数传递,因此您得到的错误来自simple-salesforce试图使用您作为字符串传递的SFType()对象。
尝试以下代码:
contact = SFType('Contact', sf.session_id, sf.sf_instance)
f = contact.describe()发布于 2018-10-13 09:47:49
我遇到了同样的问题,似乎已经通过从instance_url中删除协议(“https://"”)解决了这个问题。
如下所示:
contact = SFType(sf_object, session_id, instance_url.replace("https://",''))
contact.describe()https://stackoverflow.com/questions/33684928
复制相似问题