<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def execute_sql(server_context, schema_name, sql, container_path=None, max_rows=None, sort=None, offset=None, container_filter=None, save_in_session=None, parameters=None, required_version=None, timeout=_default_timeout):
 """ Execute sql query against a LabKey server. :param server_context: A LabKey server context. See utils.create_server_context. :param schema_name: schema of table :param sql: String of labkey sql to execute :param container_path: labkey container path if not already set in context :param max_rows: max number of rows to return :param sort: comma separated list of column names to sort by :param offset: number of rows to offset results by :param container_filter: enumeration of the various container filters available. See: https://www.labkey.org/download/clientapi_docs/javascript-api/symbols/LABKEY.Query.html#.containerFilter :param save_in_session: save query result as a named view to the session :param parameters: parameter values to pass through to a parameterized query :param required_version: Api version of response :param timeout: timeout of request in seconds (defaults to 30s) :return: """

    url = server_context.build_url('query', 'executeSql.api', container_path=container_path)

    payload = {
        'schemaName': schema_name,
        'sql': sql
    }

    if container_filter is not None:
        payload['containerFilter'] = container_filter

    if max_rows is not None:
        payload['maxRows'] = max_rows

    if offset is not None:
        payload['offset'] = offset

    if sort is not None:
        payload['query.sort'] = sort

    if save_in_session is not None:
        payload['saveInSession'] = save_in_session

    if parameters is not None:
        for key, value in parameters.items():
            payload['query.param.' + key] = value

    if required_version is not None:
        payload['apiVersion'] = required_version

    return server_context.make_request(url, payload, timeout=timeout)