class_docstr: Abstract class for defining storage engine. Storage engine is responsible
  for handling data storage and retrieval tasks.
  This contains a minimal set of APIs that each engine should implement
class_docstr_tok: ["Abstract","class","for","defining","storage","engine",".","Storage","engine","is","responsible","for","handling","data","storage","and","retrieval","tasks",".","This","contains","a","minimal","set","of","APIs","that","each","engine","should","implement"]
docstr: Interface responsible for inserting the rows into the required
  table. Internally calls the _open function and does the required
  task.
  
  Attributes:
      table: storage unit to be created
      rows : rows data to be written
docstr_tok: ["Interface","responsible","for","inserting","the","rows","into","the","required","table",".","Internally","calls","the","_open","function","and","does","the","required","task",".","Attributes",":","table",":","storage","unit","to","be","created","rows",":","rows","data","to","be","written"]
code: def write(self, table: TableCatalogEntry, rows: Batch):
      """Interface responsible for inserting the rows into the required
      table. Internally calls the _open function and does the required
      task.
  
      Attributes:
          table: storage unit to be created
          rows : rows data to be written
      """
  
file_path: evadb/evadb/storage/abstract_storage_engine.py
imports: from abc import ABCMeta, abstractmethod
  from typing import Iterator
  from evadb.catalog.models.table_catalog import TableCatalogEntry
  from evadb.database import EvaDBDatabase
  from evadb.expression.abstract_expression import AbstractExpression
  from evadb.models.storage.batch import Batch
label_desc: Use image node_id 3 for calling the AbstractStorageEngine obj's underlying member method code with example usage: obj.write(table, rows) without return types