Esempio n. 1
0
 def load_environments(self):
     query = "SELECT rowid, data FROM environments"
     for row in self.cn.execute(query):
         # Note, populating the cache is mandatory otherwise. Otherwise, when the
         # generator populates its cache, it might give us back an env_id that
         # we've never seen. Another indicaton that Database is misdesigned.
         tools_env = nodetypes.ToolsEnv(row[0], util.Unpickle(row[1]))
         self.env_cache_[tools_env.env_id] = tools_env
         self.env_reverse_lookup_[tools_env.env_data] = tools_env
Esempio n. 2
0
    def add_environment(self, env_data):
        if env_data in self.env_reverse_lookup_:
            return self.env_reverse_lookup_[env_data]

        stamp = time.time()
        blob = util.BlobType(util.CompatPickle(env_data))
        query = "INSERT INTO environments (stamp, data) VALUES (?, ?)"
        cursor = self.cn.execute(query, (stamp, blob))

        tools_env = nodetypes.ToolsEnv(cursor.lastrowid, env_data)
        self.env_cache_[tools_env.env_id] = tools_env
        self.env_reverse_lookup_[env_data] = tools_env
        return tools_env
Esempio n. 3
0
    def fetch_environment(self, env_id):
        if env_id in self.env_cache_:
            return self.env_cache_[env_id]

        query = "SELECT data FROM environments WHERE rowid = ?"
        cursor = self.cn.execute(query, (env_id, ))
        row = cursor.fetchone()
        if not row:
            raise Exception(
                'Database error, invalid environment id {}'.format(env_id))

        tools_env = nodetypes.ToolsEnv(env_id, util.Unpickle(row[0]))
        self.env_cache_[env_id] = tools_env
        self.env_reverse_lookup_[tools_env.env_data] = tools_env
        return tools_env