2

I'm new using Simple_Salesforce for Python and I'm trying to update a record of "Account" and one of the values that I need to update is a Date/Time value, but I'm receiving the error: "Object of type datetime is not JSON serializable" when I use the update method like this:

sf.Account.update(sf_id, {'variable1': value1, 'variable2_Date__c': datetime(2021, 2, 1, 1, 2, 3, tzinfo=timezone.utc)})

What am I doing wrong? Or what do I need to improve in order to do the update?

1 Answer 1

7

You have to convert the Python datetime into a string that matches the very specific format accepted by Salesforce. Here's what I do in CumulusCI:

def salesforce_from_datetime(d):
    """Create a Salesforce-style ISO8601 string from a Python datetime"""
    return d.strftime("%Y-%m-%dT%H:%M:%S.{}+0000").format(
        str(d.microsecond)[:3].ljust(3, "0")
    )

That does the ISO8601 formatting but also converts Python's microseconds into the milliseconds that the Salesforce API expects, with exactly three digits.

1
  • Thank you so much David, it works perfectly! Commented Apr 9, 2021 at 20:08

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .