Самый простой способ доступа к данным SF с использованием python?Доступ к данным Salesforce с использованием python
Мне это нужно для целей только для чтения.
Я пробовал использовать BeatBox, но, похоже, он несовместим с 3.3.
Самый простой способ доступа к данным SF с использованием python?Доступ к данным Salesforce с использованием python
Мне это нужно для целей только для чтения.
Я пробовал использовать BeatBox, но, похоже, он несовместим с 3.3.
Salesforce апи построен с использованием стандарта W3C под названием SOAP, так, а не специальную библиотеку Salesforce, вы можете попробовать обжигающе ваши WSDL-файлы в общую библиотеку SOAP. SUDS является зрелой, активно поддерживаются библиотекой, и я только что сделал успешный Salesforce метаданных апите вызов с ней, и что выглядит как
from suds.client import Client
_SF_PRODUCT_VERSION = (0, 0, 0)
USER_AGENT_STR = '/'.join(['Salesforce',
_SF_PRODUCT_NAME,
'.'.join(str(x) for x in _SF_PRODUCT_VERSION)])
def login(username, password, token):
WSDL_URL = 'file://' + path.abspath(_ENTERPRISE_WSDL_FILE)
suds_client = Client(WSDL_URL)
suds_client.set_options(headers = {
'User-Agent': USER_AGENT_STR,
})
login_result = suds_client.service.login(username, password+token)
return login_result
login_result = login(SF_USERNAME, SF_PASSWORD, SF_TOKEN)
suds_client = Client(url=METADATA_WSDL_URL, location=login_result.metadataServerUrl)
session_header = suds_client.factory.create('SessionHeader')
session_header.sessionId = login_result['sessionId']
suds_client.set_options(
headers = {
'User-Agent': USER_AGENT_STR,
},
soapheaders = {
'SessionHeader': session_header,
})
describe_metadata_result = suds_client.service.describeMetadata(29.0)
print "describe metadata result"
print describe_metadata_result
(некоторые имена были изменены, чтобы защитить невинные.)
, так что это не так просто, как могло бы быть, но с небольшим дополнительным временем для создания поверх этой очень зрелой библиотеки SOAP она, вероятно, будет более надежной, чем некоторые специализированные библиотеки Salesforce. с одной стороны, добавление
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
перед вызовом апи будет печатать запросы XML и ответы, как они посылают по проводам, которые могут быть очень полезны.
есть специальная библиотека под названием python-salesforce-toolkit, построенная на SUDS, но ни она, ни версия SUDS, на которой она построена, больше не поддерживаются.