code: def start_experiment(self, username, name, exp_config_blob):
      self.cursor.execute(
          "SELECT uid FROM user WHERE name = ?", (username,)
      )
      uid = self.cursor.fetchone()
      if uid is None:
          raise ValueError("username %s is not existed" % username)
      uid = uid[0]
      name = self._fix_name(name)
      self.cursor.execute(
          "INSERT INTO experiment (uid, name, exp_config, start_time, error_msg, status) \
                                  VALUES (?,?,?, strftime('%s','now'), NULL, 'RUNNING')",
          (uid, name, exp_config_blob),
      )
  
      self.connector.commit()
      return self.cursor.lastrowid
  
imports: import logging
  import re
  import sqlite3
  import threading
  from time import sleep
  import json
  from datetime import datetime
  from .AbstractConnector import AbstractConnector
label_desc: Use image node_id 19 for calling the SQLiteConnector obj's underlying member method code with example usage: obj.start_experiment(username, name, exp_config_blob) and returns: self