def add_parameter_data_values(project_id, occasion, csv_data): groups = [g.id for g in Group.query.filter_by(project_id=project_id)] project_animals = {animal.number: animal.id for animal in Animal.query.filter(Animal.group_id.in_(groups)).all()} valid_data = [] invalid_data = [] for animal, value in csv_data: animal = int(animal) value = float(value) if animal in project_animals: animal_id = project_animals[animal] valid_data.append(ParameterData(animal_id=animal_id, occasion_id=occasion, value=value)) else: invalid_data.append([animal, value]) print valid_data if len(valid_data) > 0: db_session.add_all(valid_data) db_session.commit() return valid_data, invalid_data
def import_animals_from_csv(groups, csv_file_path): all_animals = [] for group in groups: all_animals.extend(group.animals) animal_numbers = [animal.number for animal in all_animals] group_numbers = [group.number for group in groups] groups = {group.number: group.id for group in groups} sexes = ['m', 'f'] imported_animals = [] ignored_animal_data = [] with open(csv_file_path, 'rb') as csvfile: csvreader = csv.reader(csvfile) for row in csvreader: group = int(row[0]) number = int(row[1]) gender = row[2].lower() age = int(row[3]) if group in group_numbers \ and number not in animal_numbers \ and gender in sexes \ and age > 0: animal_numbers.append(int(row[1])) imported_animals.append(Animal(group_id=groups[group], number=number, gender=gender, age=age)) else: ignored_animal_data.append({'group': group, 'number': number, 'gender': gender, 'age': age}) if len(imported_animals) > 0: from hysto.libs.database import db_session db_session.add_all(imported_animals) db_session.commit() return imported_animals, ignored_animal_data
def save(self, model): db_session.add(model) db_session.commit() return model
Animal(number=5, age=6, gender='m', group_id=3), Animal(number=6, age=6, gender='f', group_id=4), Animal(number=7, age=6, gender='f', group_id=5), Animal(number=8, age=6, gender='f', group_id=6), Animal(number=9, age=6, gender='f', group_id=5), Animal(number=10, age=6, gender='f', group_id=6) ]) print "Animals" db_session.add_all([ Occasion(number=1, name='prestudy', parameter_id=1) ]) print "Occasions" db_session.add_all([ ProjectParameter(project_id=1, parameter_id=1, precision=2) ]) print "Parameter to Project" db_session.add_all([ ParameterData(occasion_id=1, animal_id=1, value=1.11) ]) print "Parameter data" db_session.commit() print "Done."