def force_clear(ref: str, dir_path="")->True:
     """
     force to remove database in file
     :param ref: the file name
     :return: True if remove successfully, else false
     """
     if len(dir_path) == 0:
         dir_path = get_db_buffer_default_dir()
     remove_ok = False
     filename = dir_path + ref
     try:
         time.sleep(1)
         # print("going to remove: ", filename)
         if os.path.exists(filename):
             os.remove(filename)
             # print("file removed: ", filename)
         temp_file = filename + TempDBInterface.sqlite_temp_suffix
         # print("going to remove:", temp_file)
         if os.path.exists(temp_file):
             os.remove(temp_file)
             # print("file removed: ", temp_file)
         # print("going to remove:", filename + TempDBInterface.sqlite_wal_suffix)
         if os.path.exists(filename + TempDBInterface.sqlite_wal_suffix):
             os.remove(filename + TempDBInterface.sqlite_wal_suffix)
             # print("file removed: ", filename + TempDBInterface.sqlite_wal_suffix)
         remove_ok = True
     except Exception as ex:
         msg = "error in SiteTempDatabase.force_clear(), " + filename
         ErrorLogger.log_error("SiteTempDatabase", ex, msg)
     finally:
         return remove_ok
 def __init__(self,
              ref: str,
              creation_strategy: str,
              save_dir="",
              file_limit=1000000,
              table_name="TEMP",
              write_ahead_mode=True):
     if len(save_dir) == 0:
         default_dir = get_db_buffer_default_dir()
     else:
         default_dir = save_dir
     self._table_name = table_name
     self._write_ahead_mode = write_ahead_mode
     FileHandler.create_file_if_not_exist(default_dir)
     self.filename = default_dir + ref
     # file_exist = os.path.exists(self.filename)
     self.db = sqlite3.connect(self.filename, timeout=10)
     self.cur = self.db.cursor()
     #self.cur.execute("PRAGMA journal_mode = MEMORY")
     #if not file_exist:
     if self._write_ahead_mode:
         self.cur.execute("PRAGMA journal_mode = WAL;")
         self.cur.execute("PRAGMA synchronous = OFF;")
     self.exclusive_access_file_limit = file_limit
     # cannot ensure uniqueness of data in multithread access
     #self.cur.execute("CREATE TABLE IF NOT EXISTS TEMP (LINK TEXT, RS_CODE INTEGER, LEV INTEGER, L_TYPE INTEGER, PRIMARY KEY(LINK));")
     self.cur.execute(creation_strategy)
     self.db.commit()
 def force_clear(ref: str, dir_path="") -> True:
     """
     force to remove database in file
     :param ref: the file name
     :return: True if remove successfully, else false
     """
     if len(dir_path) == 0:
         dir_path = get_db_buffer_default_dir()
     remove_ok = False
     filename = dir_path + ref
     try:
         time.sleep(1)
         # print("going to remove: ", filename)
         if os.path.exists(filename):
             os.remove(filename)
             # print("file removed: ", filename)
         temp_file = filename + TempDBInterface.sqlite_temp_suffix
         # print("going to remove:", temp_file)
         if os.path.exists(temp_file):
             os.remove(temp_file)
             # print("file removed: ", temp_file)
         # print("going to remove:", filename + TempDBInterface.sqlite_wal_suffix)
         if os.path.exists(filename + TempDBInterface.sqlite_wal_suffix):
             os.remove(filename + TempDBInterface.sqlite_wal_suffix)
             # print("file removed: ", filename + TempDBInterface.sqlite_wal_suffix)
         remove_ok = True
     except Exception as ex:
         msg = "error in SiteTempDatabase.force_clear(), " + filename
         ErrorLogger.log_error("SiteTempDatabase", ex, msg)
     finally:
         return remove_ok
 def __init__(self, ref: str, creation_strategy: str, save_dir="", file_limit=1000000,
              table_name="TEMP", write_ahead_mode=True):
     if len(save_dir) == 0:
         default_dir = get_db_buffer_default_dir()
     else:
         default_dir = save_dir
     self._table_name = table_name
     self._write_ahead_mode = write_ahead_mode
     FileHandler.create_file_if_not_exist(default_dir)
     self.filename = default_dir + ref
     # file_exist = os.path.exists(self.filename)
     self.db = sqlite3.connect(self.filename, timeout=10)
     self.cur = self.db.cursor()
     #self.cur.execute("PRAGMA journal_mode = MEMORY")
     #if not file_exist:
     if self._write_ahead_mode:
         self.cur.execute("PRAGMA journal_mode = WAL;")
         self.cur.execute("PRAGMA synchronous = OFF;")
     self.exclusive_access_file_limit = file_limit
     # cannot ensure uniqueness of data in multithread access
     #self.cur.execute("CREATE TABLE IF NOT EXISTS TEMP (LINK TEXT, RS_CODE INTEGER, LEV INTEGER, L_TYPE INTEGER, PRIMARY KEY(LINK));")
     self.cur.execute(creation_strategy)
     self.db.commit()