docstr: Initializes the engine and session for database operations
code: def __init__(self, uri):
      """Initializes the engine and session for database operations"""
  
      self.worker_uri = str(uri)
      # set echo=True to log SQL
  
      # Default to SQLite.
      connect_args = {"timeout": 1000}
      self.engine = create_engine(
          self.worker_uri,
          connect_args=connect_args,
      )
  
      if self.engine.url.get_backend_name() == "sqlite":
          # enforce foreign key constraint and wal logging for sqlite
          # https://docs.sqlalchemy.org/en/20/dialects/sqlite.html#foreign-key-support
  
          def _enable_sqlite_pragma(dbapi_con, con_record):
              dbapi_con.execute("pragma foreign_keys=ON")
              dbapi_con.execute("pragma synchronous=NORMAL")
  
              # disabling WAL for now, we need to fix the catalog operations.
              # Currently, there are too many connections being made, which is not an
              # optimal design. Ideally, we should implement a connection pool for
              # better management.
              # dbapi_con.execute("pragma journal_mode=WAL")
              # dbapi_con.close()
  
          event.listen(self.engine, "connect", _enable_sqlite_pragma)
      # statements
      self.session = scoped_session(sessionmaker(bind=self.engine))
      self.session.close()
  
file_path: evadb/evadb/catalog/sql_config.py
imports: from threading import Lock
  from weakref import WeakValueDictionary
  from sqlalchemy import create_engine, event
  from sqlalchemy.orm import scoped_session, sessionmaker
label_desc: Use image node_id 1 to create a new SQLConfig object  with example: obj = SQLConfig(uri)