code: def read(self, run, prefix, tag, qual, step):
      col_index = self._read_col_index(qual, step)
      cur = self._db.cursor()
      if prefix is None:
          cur.execute(
              """
                SELECT * FROM scalar
                WHERE run = ? AND tag = ?
              """,
              (run.id, tag),
          )
      else:
          cur.execute(
              """
                SELECT * FROM scalar
                WHERE run = ? AND prefix LIKE ? AND tag = ?
                ORDER BY prefix, tag
              """,
              (run.id, f"{prefix}%", tag),
          )
      row = cur.fetchone()
      if not row:
          return None
      return row[col_index]
  
imports: import logging
  import os
  import sqlite3
  from guild import run_util
  from guild import tfevent
  from guild import util
  from guild import var
label_desc: Use image node_id 9 for calling the ScalarReader obj's underlying member method code with example usage: obj.read(run, prefix, tag, qual, step) and returns: row, None