I'm trying to set up my python script to log SQL queries executed.
I have this function for executing queries, which can accept values if passing a query with '?' placeholders:
def sqlQuery(type, query, values=None):
    dbCursor = dbCRM.cursor()
    if values != None:
        dbCursor.execute(query, values)
    else:
        dbCursor.execute(query)
    logging.debug('SQL query executed ({})'.format(query.replace("?", "{}").format(values)))
    if type == 'select':    
        data = []
        while True:
            row = dbCursor.fetchone()
            if row:
                data.append(tuple(row))
            else:
                break
        dbCursor.close()
        return data
    dbCRM.commit()
The logger.debug line is meant to log the SQL query by replacing the ?'s with {} and then using .format to fill in the values.
This is where the function is called. The two values are a string returned by an API request, and an integer returned by a different SQL query.
query = "UPDATE Company SET comp_bigchange_contactid = ? WHERE comp_companyid = ?"
sqlQuery('update',query, (apiResult.get('Result'), compID))
When trying to run this I get this error:
IndexError: Replacement index 1 out of range for positional args tuple
I am assuming there is a better way of logging this kind of SQL query.
 
    