class_docstr: Database for `PreprocessingCache` class.
  Includes low-level idea of caching pipeline preprocessor items using relational database.
  
  :param cache_dir: path to the place where cache files should be stored.
class_docstr_tok: ["Database","for","`","PreprocessingCache","`","class",".","Includes","low-level","idea","of","caching","pipeline","preprocessor","items","using","relational","database",".",":","param","cache_dir",":","path","to","the","place","where","cache","files","should","be","stored","."]
docstr: Adds preprocessor score to DB table vid its uid.
  
  :param uid: unique preprocessor identificator
  :param value: the preprocessor itself
docstr_tok: ["Adds","preprocessor","score","to","DB","table","vid","its","uid",".",":","param","uid",":","unique","preprocessor","identificator",":","param","value",":","the","preprocessor","itself"]
code: def add_preprocessor(self, uid: str, value: DataPreprocessor):
      """
      Adds preprocessor score to DB table vid its uid.
  
      :param uid: unique preprocessor identificator
      :param value: the preprocessor itself
      """
      with closing(sqlite3.connect(self.db_path)) as conn:
          with conn:
              cur = conn.cursor()
              pickled_encoder = sqlite3.Binary(
                  pickle.dumps(
                      value.features_encoders, pickle.HIGHEST_PROTOCOL
                  )
              )
              pickled_imputer = sqlite3.Binary(
                  pickle.dumps(
                      value.features_imputers, pickle.HIGHEST_PROTOCOL
                  )
              )
              cur.execute(
                  f"INSERT OR IGNORE INTO {self._main_table} VALUES (?, ?, ?);",
                  [uid, pickled_encoder, pickled_imputer],
              )
  
file_path: FEDOT/fedot/core/caching/preprocessing_cache_db.py
imports: import pickle
  import sqlite3
  from contextlib import closing
  from typing import Dict, Optional, Tuple
  from fedot.core.caching.base_cache_db import BaseCacheDB
  from fedot.core.operations.evaluation.operation_implementations.data_operations.categorical_encoders import OneHotEncodingImplementation
  from fedot.core.operations.evaluation.operation_implementations.data_operations.sklearn_transformations import ImputationImplementation
  from fedot.preprocessing.preprocessing import DataPreprocessor
label_desc: Use image node_id 3 for calling the PreprocessingCacheDB obj's underlying member method code with example usage: obj.add_preprocessor(uid, value) without return types