python: unable to post data to Hubspot from DKU

apogee211
apogee211 Registered Posts: 3 ✭✭✭

Hello,

I'm attempting to upload a dataset to Hubspot from Dataiku using Python. The procedure runs fine in DKU but fails to upload data into Hubspot. Note - this code does post to Hubspot when run from my local computer. I'm wondering what is DKU doing that is different from my local version when posting data to an external site?

beg_url = 'https://api.hubapi.com/crm/v3/imports?'
end_url = 'hapikey={}'.format(API_key)
post_url = beg_url+end_url

data = {
"name": "my_import",
"files": [
{
"fileName": "Combined_HS_Metrics_test.csv",
"fileFormat":"CSV",
"fileImportPage": {
"hasHeader": True,
"columnMappings": [

{
"ignored":False,
"columnName":"company_id",
"idColumnType":"HUBSPOT_OBJECT_ID",
"propertyName":"company id",
"foreignKeyType":None,
"columnObjectType":"COMPANY",
"associationIdentifierColumn":False
}

]

}
}
]
}

files = {
'importRequest': (None, json.dumps(data), 'multipart/form-data'),

'files': "Combined_HS_Metrics_test.csv"
}
response = requests.put(post_url, files=files)

Answers

  • HenriC
    HenriC Dataiker Posts: 22 Dataiker

    Hi @apogee211
    !

    To be sure I understand the problem, you manage to upload a dataset to Hubspot by executing this python script in local, but when you run it from Dataiku, it executes successfully without error but does not upload any data at the end fo the day. Am I right ?

    Have a nice day,

    Henri

  • apogee211
    apogee211 Registered Posts: 3 ✭✭✭

    Hi Henri,

    Yes, that's exactly correct.

    Thanks!

    John

  • HenriC
    HenriC Dataiker Posts: 22 Dataiker
    edited July 17

    Thanks for the confirmation ! It is indeed very strange, could you please check that the response has a success code ? Meaning adding the following code at the end of your Python file :

    print(response)
    print(response.content)
    

    It wouldn't make sense if the code was the same from your local env and DSS as the response is sent back by Hubpot, so if it sends a success code, it means that it has interpreted the put request as successful.

  • apogee211
    apogee211 Registered Posts: 3 ✭✭✭

    Thanks, I do have a response code (see below) which is returning no data. Initially, I was using a "requests.request" function which was returning "bad request 400". However, I switched to requests.put but this is returning an empty string.

    #initially# response = requests.request("POST", post_url, files=files)
    #current# response = requests.put(post_url, files=files)

    #feedback

    Hubspot_Upload_status = dataiku.Dataset("Hubspot_Upload_status")
    the_row = {}
    the_row["information"] = response.text
    with Hubspot_Upload_status.get_writer() as writer:
    writer.write_row_dict(the_row)

Setup Info
    Tags
      Help me…