def SearchTVLibrary(self, showName = None, showID = None, showDir = None):
    """
    Search TVLibrary table.

    If none of the optonal arguments are given it looks up all entries of the
    table, otherwise it will look up entries which match the given arguments.

    Note that it only looks up based on one argument - if show directory is
    given this will be used, otherwise show id will be used if it is given,
    otherwise show name will be used.

    Parameters
    ----------
      showName : string [optional : default = None]
        Show name.

      showID : int [optional : default = None]
        Show id value.

      showDir : string [optional : default = None]
        Show directory name.

    Returns
    ----------
      list or None
        If no result is found this returns None otherwise it will return a the
        result of the SQL query as a list. In the case that the result is expected
        to be unique and multiple entries are return a fatal error will be raised.
    """
    unique = True
    if showName is None and showID is None and showDir is None:
      goodlogging.Log.Info("DB", "Looking up all items in TV library", verbosity=self.logVerbosity)
      queryString = "SELECT * FROM TVLibrary"
      queryTuple = None
      unique = False
    elif showDir is not None:
      goodlogging.Log.Info("DB", "Looking up from TV library where ShowDir is {0}".format(showDir), verbosity=self.logVerbosity)
      queryString = "SELECT * FROM TVLibrary WHERE ShowDir=?"
      queryTuple = (showDir, )
    elif showID is not None:
      goodlogging.Log.Info("DB", "Looking up from TV library where ShowID is {0}".format(showID), verbosity=self.logVerbosity)
      queryString = "SELECT * FROM TVLibrary WHERE ShowID=?"
      queryTuple = (showID, )
    elif showName is not None:
      goodlogging.Log.Info("DB", "Looking up from TV library where ShowName is {0}".format(showName), verbosity=self.logVerbosity)
      queryString = "SELECT * FROM TVLibrary WHERE ShowName=?"
      queryTuple = (showName, )

    result = self._ActionDatabase(queryString, queryTuple, error = False)

    if result is None:
      return None
    elif len(result) == 0:
      return None
    elif len(result) == 1:
      goodlogging.Log.Info("DB", "Found match in TVLibrary: {0}".format(result), verbosity=self.logVerbosity)
      return result
    elif len(result) > 1:
      if unique is True:
        goodlogging.Log.Fatal("DB", "Database corrupted - multiple matches found in TV Library: {0}".format(result))
      else:
        goodlogging.Log.Info("DB", "Found multiple matches in TVLibrary: {0}".format(result), verbosity=self.logVerbosity)
        return result
Search TVLibrary table.

    If none of the optonal arguments are given it looks up all entries of the
    table, otherwise it will look up entries which match the given arguments.

    Note that it only looks up based on one argument - if show directory is
    given this will be used, otherwise show id will be used if it is given,
    otherwise show name will be used.

    Parameters
    ----------
      showName : string [optional : default = None]
        Show name.

      showID : int [optional : default = None]
        Show id value.

      showDir : string [optional : default = None]
        Show directory name.

    Returns
    ----------
      list or None
        If no result is found this returns None otherwise it will return a the
        result of the SQL query as a list. In the case that the result is expected
        to be unique and multiple entries are return a fatal error will be raised.