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
from hysto.project.models import Project, Group, Animal, ProjectParameter, Occasion, ParameterData from hysto.libs.database import Base, engine, db_session from hysto.settings.config import DATABASE_FILE if os.path.isfile(DATABASE_FILE): os.remove(DATABASE_FILE) print "Deleted existing db file found" Base.metadata.create_all(bind=engine) print "Created tables" print "Adding data:" db_session.add_all([ Origin(name='Canada'), Origin(name='China'), ]) print "Origins" db_session.add_all([ Species(name='Rat', strain='mr', origin_id=1), Species(name='Mouse', strain='ms', origin_id=1), Species(name='Monkey', strain='mm', origin_id=2), Species(name='Rabbit', strain='ms', origin_id=2) ]) print "Species" db_session.add_all([ Sponsor(name='PyPharma', website='http://pypharma.py', address='12 PyStreet, PyState, PyCountry'), Sponsor(name='HystoPharma')