Returns the ID for the given run, creating the row if needed.

    Args:
      experiment_name: name of experiment containing this run.
      run_name: name of run.

def _maybe_init_run(self, experiment_name, run_name):
    """Returns the ID for the given run, creating the row if needed.

    Args:
      experiment_name: name of experiment containing this run.
      run_name: name of run.
    """
    experiment_id = self._maybe_init_experiment(experiment_name)
    cursor = self._db.cursor()
    cursor.execute(
        """
        SELECT run_id FROM Runs
        WHERE experiment_id = ? AND run_name = ?
        """,
        (experiment_id, run_name))
    row = cursor.fetchone()
    if row:
      return row[0]
    run_id = self._create_id()
    # TODO: track actual run start times
    started_time = 0
    cursor.execute(
        """
        INSERT INTO Runs (
          experiment_id, run_id, run_name, inserted_time, started_time
        ) VALUES (?, ?, ?, ?, ?)
        """,
        (experiment_id, run_id, run_name, time.time(), started_time))
    return run_id