def test(self): s = self.session dao = SA_Effort_DAO(session = s) # Drop/Create tables. sa_metadata.metadata.drop_all(s.bind) sa_metadata.metadata.create_all(s.bind) s.commit() # Generate test effort set. efforts = fishing_util.generate_efforts() ## Merge generated objects for testing. for o_key, o in util_registry.object_registry.items(): try: if not o_key[0] in ['Effort']: s.add(o) except: pass # Test DAO operations. tag_filter = {'attr': 'Effort.tag', 'op': '==', 'value': 'a'} dao.save_efforts(efforts) fetched_efforts = dao.get_efforts(filters=[tag_filter]) self.failUnless(True)
def main(): # Get params from command line. if len(sys.argv) != 3: print >> sys.stderr, "Must provide csv file and id of effort set to be created in db." exit(1) csv_file = sys.argv[1] tag = sys.argv[2] # Setup DAOs. db_session = sa_session.get_session() effort_dao = SA_Effort_DAO(session = db_session) cell_dao = SA_Cell_DAO(session = db_session) # Get 100km cells and make id lookup. cells = cell_dao.get_cells(filters=[{'attr': 'type', 'op': '==', 'value': 'km100'}]) cells_by_100km_id = {} for c in cells: cells_by_100km_id[c.type_id] = c # Make gears lookup. gears_by_id = {} for gear in db_session.query(Gear).all(): gears_by_id[gear.id] = gear # Create efforts from csv rows. efforts = [] csv_reader = csv.DictReader(open(csv_file, "rb")) r_counter = 0 for r in csv_reader: r_counter += 1 if (r_counter % 1000) == 0: print >> sys.stderr, r_counter # Get cell. cell = cells_by_100km_id[int(r['id_100'])] # Get gear. gear_id = "GC%s" % r['gear_code'] gear = gears_by_id[gear_id] # Create effort. efforts.append(Effort( cell = cell, time = r['year'], gear = gear, tag = tag, swept_area = float(r['A']), hours_fished = float(r['hours_fished']) )) # Save efforts. effort_dao.save_efforts(efforts)