docstr: Write rows into the sql table.
  
  Arguments:
      table: table metadata object to write into
      rows : batch to be persisted in the storage.
docstr_tok: ["Write","rows","into","the","sql","table",".","Arguments",":","table",":","table","metadata","object","to","write","into","rows",":","batch","to","be","persisted","in","the","storage","."]
code: def write(self, table: TableCatalogEntry, rows: Batch):
      """
      Write rows into the sql table.
  
      Arguments:
          table: table metadata object to write into
          rows : batch to be persisted in the storage.
      """
      try:
          table_to_update = self._try_loading_table_via_reflection(
              table.name
          )
          columns = rows.frames.keys()
          data = []
  
          # During table writes, assume row_id is automatically handled by
          # the sqlalchemy engine. Another assumption we make here is the
          # updated data need not to take care of row_id.
          table_columns = [
              col
              for col in table.columns
              if (
                  col.name != IDENTIFIER_COLUMN
                  and col.name != ROW_NUM_COLUMN
              )
          ]
  
          # Todo: validate the data type before inserting into the table
          for record in rows.frames.values:
              row_data = {
                  col: record[idx]
                  for idx, col in enumerate(columns)
                  if col != ROW_NUM_COLUMN
              }
              data.append(
                  self._dict_to_sql_row(row_data, table_columns)
              )
          self._sql_session.execute(table_to_update.insert(), data)
          self._sql_session.commit()
      except Exception as e:
          err_msg = f"Failed to update the table {table.name} with exception {str(e)}"
          logger.exception(err_msg)
          raise Exception(err_msg)
  
imports: from typing import Iterator, List
  import numpy
  import pandas
  from sqlalchemy import Table, inspect
  from sqlalchemy.sql.expression import ColumnElement
  from evadb.catalog.catalog_type import ColumnType
  from evadb.catalog.models.base_model import BaseModel
  from evadb.catalog.models.column_catalog import ColumnCatalogEntry
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.catalog.schema_utils import SchemaUtils
  from evadb.catalog.sql_config import IDENTIFIER_COLUMN, ROW_NUM_COLUMN
  from evadb.database import EvaDBDatabase
  from evadb.models.storage.batch import Batch
  from evadb.parser.table_ref import TableInfo
  from evadb.storage.abstract_storage_engine import AbstractStorageEngine
  from evadb.utils.generic_utils import PickleSerializer, rebatch
  from evadb.utils.logging_manager import logger
label_desc: Use image node_id 7 for calling the SQLStorageEngine obj's underlying member method code with example usage: obj.write(table, rows) without return types