def from_experiment_id_and_tick(cls, experiment_id, tick): """Query MachineStates by their Experiment id and tick.""" machine_states = [] statement = 'SELECT * FROM machine_states WHERE experiment_id = %s AND machine_states.tick = %s' results = database.fetchall(statement, (experiment_id, tick)) for row in results: machine_states.append(cls._from_database_row(row)) return machine_states
def query(cls, column_name=None, value=None): """Return all instances of the Model in the database where column_name = value.""" if column_name is not None and value is not None: statement = 'SELECT * FROM {} WHERE {} = %s'.format( cls.TABLE_NAME, column_name) database_models = database.fetchall(statement, (value, )) else: statement = 'SELECT * FROM {}'.format(cls.TABLE_NAME) database_models = database.fetchall(statement) models = [] for database_model in database_models: parameters = {} for i, parameter in enumerate(cls.COLUMNS): parameters[parameter] = database_model[i] models.append(cls(**parameters)) return models
def from_experiment_id_and_tick(cls, experiment_id, tick): """Query Task States by their Experiment id and tick.""" task_states = [] statement = 'SELECT * FROM task_states WHERE experiment_id = %s AND tick = %s' results = database.fetchall(statement, (experiment_id, tick)) for row in results: task_states.append( cls(id=row[0], task_id=row[1], experiment_id=row[2], tick=row[3], flops_left=row[4])) return task_states
def from_experiment_id(cls, experiment_id): """Query RoomStates by their Experiment id.""" room_states = [] statement = ''' SELECT task_id, MAX(tick) - MIN(tick) as duration FROM task_states WHERE experiment_id = %s GROUP BY task_id ''' results = database.fetchall(statement, (experiment_id, )) for row in results: room_states.append(cls._from_database_row(row)) return room_states
def from_experiment_id(cls, experiment_id): """Query RackStates by their Experiment id.""" rack_states = [] statement = ''' SELECT racks.id, avg(machine_states.load_fraction), machine_states.tick FROM racks JOIN machines ON racks.id = machines.rack_id JOIN machine_states ON machines.id = machine_states.machine_id WHERE machine_states.experiment_id = %s GROUP BY machine_states.tick, racks.id ''' results = database.fetchall(statement, (experiment_id, )) for row in results: rack_states.append(cls._from_database_row(row)) return rack_states
def read(self): """Read this Machine by also getting its CPU, GPU, Memory and Storage IDs.""" super(Machine, self).read() for device_table in self.device_table_to_attribute.keys(): statement = 'SELECT * FROM machine_{} WHERE machine_id = %s'.format( device_table) results = database.fetchall(statement, (self.id, )) device_ids = [] for row in results: device_ids.append(row[2]) setattr(self, self.device_table_to_attribute[device_table], device_ids) setattr(self, 'tags', [])
def from_experiment_id(cls, experiment_id): """Query RoomStates by their Experiment id.""" room_states = [] statement = ''' SELECT rooms.id, avg(machine_states.load_fraction), machine_states.tick FROM rooms JOIN tiles ON rooms.id = tiles.room_id JOIN objects ON tiles.object_id = objects.id JOIN racks ON objects.id = racks.id JOIN machines ON racks.id = machines.rack_id JOIN machine_states ON machines.id = machine_states.machine_id WHERE objects.type = "RACK" AND machine_states.experiment_id = %s GROUP BY machine_states.tick, rooms.id ''' results = database.fetchall(statement, (experiment_id, )) for row in results: room_states.append(cls._from_database_row(row)) return room_states