class_docstr: The Sendinblue Email Campaigns Table implementation
class_docstr_tok: ["The","Sendinblue","Email","Campaigns","Table","implementation"]
code: def update_email_campaigns(
      self, campaign_ids: List[int], values_to_update: Dict
  ) -> None:
      # this establish a connection to Sendinblue API
  
      connection = self.handler.connect()
      email_campaigns_api_instance = sib_api_v3_sdk.EmailCampaignsApi(
          connection
      )
  
      for campaign_id in campaign_ids:
          try:
              email_campaigns_api_instance.update_email_campaign(
                  campaign_id, values_to_update
              )
              logger.info(f"Email Campaign {campaign_id} updated")
          except ApiException as e:
              logger.error(
                  f"Exception when calling EmailCampaignsApi->update_email_campaign: {e}\n"
              )
              raise RuntimeError(
                  f"Failed to execute the update command for Email Campaign {campaign_id}"
              ) from e
  
file_path: mindsdb/mindsdb/integrations/handlers/sendinblue_handler/sendinblue_tables.py
imports: import sib_api_v3_sdk
  import pandas
  from typing import List, Optional, Dict
  from mindsdb.utilities import log
  from mindsdb.integrations.libs.api_handler import APITable
  from mindsdb_sql.parser import ast
  from sib_api_v3_sdk.rest import ApiException
  from datetime import datetime
  from mindsdb.integrations.handlers.utilities.query_utilities import SELECTQueryParser, SELECTQueryExecutor, UPDATEQueryExecutor, UPDATEQueryParser, DELETEQueryParser, DELETEQueryExecutor
label_desc: Use image node_id 7 for calling the EmailCampaignsTable obj's underlying member method code with example usage: obj.update_email_campaigns(campaign_ids, values_to_update) without return types