TypeError:无法连接' str'和' SFType'对象(简单销售人员)

时间:2015-11-13 02:21:36

标签: python salesforce simple-salesforce

我的项目是提取所有salesforce表的内容,包括自定义表。为此,我需要知道列(字段)的名称,因为SOQL不支持来自TABLENAME"的#34; SELECT *。

使用简单的salesforce,我知道以下工作:

sf = Salesforce(username='foo@bar.com', password='abcd', security_token='ZCdsdPdE4eI2DZMl5gwCFIGEFU')

    field_data = sf.Contact.describe()["fields"]

但我的问题是我需要参与"联系"在上面的实际方法调用中的字符串,以便我可以为我不知道名称的对象调用此方法(即未在标准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

提前感谢任何建议。

2 个答案:

答案 0 :(得分:4)

如果您查看source code for simple-salesforce(截至2015-11-12),我们会在init()的{​​{1}}中看到我们将会话设置为Salesforce()self.session_id

的实例

在您的情况下,您正在使用self.sf_instance,并且因为只需sf.sessionid上的方法或属性(和{{},简单salesforce就会返回SFType()对象{1}}上不存在{1}}您实际上是将Salesforce()对象插入sessionid

的初始值

Salesforce()没有做任何形式的验证来确认你是否将字符串作为参数传递,所以你得到的错误来自于简单的salesforce尝试使用SFType()对象你'作为一个字符串传入。

试试这段代码:

SFType()

答案 1 :(得分:0)

我遇到了同样的问题,并且似乎已通过从instance_url中删除协议(“ https://”)解决了该问题。这很奇怪,但现在似乎对我有用,我可以contact.describe()

类似这样的东西:

contact = SFType(sf_object, session_id, instance_url.replace("https://",''))
contact.describe()