コード例 #1
0
    def __init__(self, filename):
        """
        Initialize.

        Parameters
        ----------
        filename : str
            The path to the filename containing the recorded data.
        """
        super(SqliteCaseReader, self).__init__(filename)

        if filename is not None:
            if not is_valid_sqlite3_db(filename):
                raise IOError('File does not contain a valid '
                              'sqlite database ({0})'.format(filename))
        self._coordinate_split_re = re.compile('\|\\d+\|*')

        with sqlite3.connect(self.filename) as con:
            cur = con.cursor()
            cur.execute(
                "SELECT format_version, abs2prom, prom2abs, abs2meta FROM metadata"
            )
            row = cur.fetchone()
            self.format_version = row[0]
            self._abs2prom = None
            self._prom2abs = None
            self._abs2meta = None

            if PY2:
                self._abs2prom = pickle.loads(str(
                    row[1])) if row[1] is not None else None
                self._prom2abs = pickle.loads(str(
                    row[2])) if row[2] is not None else None
                self._abs2meta = pickle.loads(str(
                    row[3])) if row[3] is not None else None
            if PY3:
                self._abs2prom = pickle.loads(
                    row[1]) if row[1] is not None else None
                self._prom2abs = pickle.loads(
                    row[2]) if row[2] is not None else None
                self._abs2meta = pickle.loads(
                    row[3]) if row[3] is not None else None
        con.close()

        self.output2meta = PromotedToAbsoluteMap(self._abs2meta,
                                                 self._prom2abs,
                                                 self._abs2prom, True)
        self.input2meta = PromotedToAbsoluteMap(self._abs2meta, self._prom2abs,
                                                self._abs2prom, False)

        self._load()
コード例 #2
0
    def __init__(self, filename):
        """
        Initialize.

        Parameters
        ----------
        filename : str
            The path to the filename containing the recorded data.
        """
        super(SqliteCaseReader, self).__init__(filename)

        if filename is not None:
            if not is_valid_sqlite3_db(filename):
                if not os.path.exists(filename):
                    raise IOError('File does not exist({0})'.format(filename))
                else:
                    raise IOError('File does not contain a valid '
                                  'sqlite database ({0})'.format(filename))

        self._coordinate_split_re = re.compile('\|\\d+\|*')

        with sqlite3.connect(self.filename) as con:
            cur = con.cursor()

            # need to see what columns are in the metadata table before we query it
            cursor = cur.execute('select * from metadata')
            names = [description[0] for description in cursor.description]
            if "var_settings" in names:
                cur.execute(
                    "SELECT format_version, abs2prom, prom2abs, abs2meta, var_settings "
                    "FROM metadata")
            else:
                cur.execute(
                    "SELECT format_version, abs2prom, prom2abs, abs2meta FROM metadata"
                )
            row = cur.fetchone()
            self.format_version = row[0]
            self._abs2prom = None
            self._prom2abs = None
            self._abs2meta = None
            self._var_settings = None

            if self.format_version >= 4:
                self._var_settings = safe_load(row[4])

            if self.format_version >= 3:
                self._abs2prom = safe_load(row[1])
                self._prom2abs = safe_load(row[2])
                self._abs2meta = safe_load(row[3])

                for name in self._abs2meta:
                    if 'lower' in self._abs2meta[name]:
                        self._abs2meta[name]['lower'] =\
                            convert_to_np_array(self._abs2meta[name]['lower'], name, self._abs2meta)
                    if 'upper' in self._abs2meta[name]:
                        self._abs2meta[name]['upper'] =\
                            convert_to_np_array(self._abs2meta[name]['upper'], name, self._abs2meta)
            elif self.format_version in (1, 2):
                if PY2:
                    self._abs2prom = pickle.loads(str(
                        row[1])) if row[1] is not None else None
                    self._prom2abs = pickle.loads(str(
                        row[2])) if row[2] is not None else None
                    self._abs2meta = pickle.loads(str(
                        row[3])) if row[3] is not None else None

                if PY3:
                    try:
                        self._abs2prom = pickle.loads(
                            row[1]) if row[1] is not None else None
                        self._prom2abs = pickle.loads(
                            row[2]) if row[2] is not None else None
                        self._abs2meta = pickle.loads(
                            row[3]) if row[3] is not None else None
                    except TypeError:
                        # Reading in a python 2 pickle recorded pre-OpenMDAO 2.4.
                        self._abs2prom = pickle.loads(row[1].encode()) if row[1] is not None \
                            else None
                        self._prom2abs = pickle.loads(row[2].encode()) if row[2] is not None \
                            else None
                        self._abs2meta = pickle.loads(row[3].encode()) if row[3] is not None \
                            else None

        con.close()

        self.output2meta = PromotedToAbsoluteMap(self._abs2meta,
                                                 self._prom2abs,
                                                 self._abs2prom, True)
        self.input2meta = PromotedToAbsoluteMap(self._abs2meta, self._prom2abs,
                                                self._abs2prom, False)

        self._load()