code: def create(
              self,
              overwrite=False):
          
          logger.info("Creating database: %s", self.local_db_path)
          df = self._load_gtf_as_dataframe(
              usecols=self.restrict_gtf_columns,
              features=self.restrict_gtf_features)
          all_index_groups = self._all_possible_indices(df.columns)
  
          if self.restrict_gtf_features:
              feature_names = self.restrict_gtf_features
          else:
              # split single DataFrame into dictionary mapping each unique
              # feature name onto that subset of the data
              feature_names = df['feature'].unique()
          dataframes = {}
          # every table gets the same set of indices
          indices_dict = {}
          # if a feature has an ID then make it that table's primary key
          primary_keys = {}
  
          for feature in feature_names:
              df_subset = df[df.feature == feature]
              if len(df_subset) == 0:
                  continue
              dataframes[feature] = df_subset
  
              primary_key = self._get_primary_key(feature, df_subset)
              if primary_key:
                  primary_keys[feature] = primary_key
  
              indices_dict[feature] = self._feature_indices(
                  all_index_groups,
                  primary_key,
                  df_subset)
  
          self._connection = datacache.db_from_dataframes_with_absolute_path(
              db_path=self.local_db_path,
              table_names_to_dataframes=dataframes,
              table_names_to_primary_keys=primary_keys,
              table_names_to_indices=indices_dict,
              overwrite=overwrite,
              version=DATABASE_SCHEMA_VERSION)
          return self._connection
docs: Create the local database (including indexing) if it's not
          already set up. If `overwrite` is True, always re-create
          the database from scratch.
  
          Returns a connection to the database.