docs: def open(self, auto_commit=None, schema=None):
          ''' Create a context to execute queries '''
          if schema is None:
              schema = self.schema
          ac = auto_commit if auto_commit is not None else schema.auto_commit
          exe = ExecutionContext(self.path, schema=schema, auto_commit=ac)
          # setup DB if required
          if not os.path.isfile(self.path) or os.path.getsize(self.path) == 0:
              getLogger().warning("DB does not exist at {}. Setup is required.".format(self.path))
              # run setup files
              if schema is not None and schema.setup_files:
                  for file_path in schema.setup_files:
                      getLogger().debug("Executing script file: {}".format(file_path))
                      exe.cur.executescript(self.read_file(file_path))
              # run setup scripts
              if schema.setup_scripts:
                  for script in schema.setup_scripts:
                      exe.cur.executescript(script)
          return exe