def load_polityd(src): session = model.SESSION() reader = xls.DictReader(src) columns = [x.name for x in model.PolityCase.__table__.c] cnt = collections.Counter() for row in reader: ccode = row['ccode'] cnt[ccode] += 1 row['pcase'] = cnt[ccode] row['present'] = row['present'] == '1' for i in ('e', 'b'): row['%sday' % i] = utils.replmiss(row['%sday' % i], lambda x: int(x) == 99) row['%smonth' % i] = utils.replmiss(row['%smonth' % i], lambda x: int(x) == 99) row['%syear' % i] = utils.replmiss(row['%syear' % i], lambda x: int(x) == 9999) if row['byear']: row['bdate'] = utils.row_ymd(row, 'byear', 'bmonth', 'bday') if row['eyear']: row['edate'] = utils.row_ymd(row, 'eyear', 'emonth', 'eday') session.add(model.PolityCase(**utils.subset(row, columns))) session.commit()
def load_war3_partic(src): """ Load COW War Data v. 3, Participants """ session = model.SESSION() def _int(x): try: return int(x) except TypeError: return None def _dates(row, n): if row['yr_beg%d' % n]: y = model.War3ParticDate() y.war_partic = row['war_partic'] y.spell_no = n date_beg = utils.daterng(_int(row['yr_beg%d' % n]), _int(row['mon_beg%d' % n]), _int(row['day_beg%d' % n])) y.date_beg_min, y.date_beg_max = date_beg date_end = utils.daterng(_int(row['yr_end%d' % n]), _int(row['mon_end%d' % n]), _int(row['day_end%d' % n])) y.date_end_min, y.date_end_max = date_end session.add(y) reader = csv2.DictReader(src, encoding='latin1') reader.fieldnames = [utils.camel2under(x) for x in reader.fieldnames] war_cols = [x.name for x in model.War3Partic.__table__.c] war_date_cols = [x.name for x in model.War3ParticDate.__table__.c] cnt = collections.Counter() for row in reader: ## Account for multiple country-war participations key = (row['war_no'], row['state_num']) cnt[key] += 1 row['partic_no'] = cnt[key] row['war_partic'] = war_partic_pkey(row['war_no'], row['state_num'], row['partic_no']) ## replace missing values for k,v in row.iteritems(): row[k] = utils.replmiss(v, lambda x: x in ("-999", "-888")) session.add(model.War3Partic(**utils.subset(row, war_cols))) ## Dates for i in (1, 2): _dates(row, i) session.commit()
def load_war3(src): """ Load COW War Data v. 3 """ session = model.SESSION() def _int(x): try: return int(x) except TypeError: return None def _dates(row, n): if row['yr_beg%d' % n]: y = model.War3Date() y.war_no = row['war_no'] y.spell_no = n date_beg = utils.daterng(_int(row['yr_beg%d' % n]), _int(row['mon_beg%d' % n]), _int(row['day_beg%d' % n])) y.date_beg_min, y.date_beg_max = date_beg date_end = utils.daterng(_int(row['yr_end%d' % n]), _int(row['mon_end%d' % n]), _int(row['day_end%d' % n])) y.date_end_min, y.date_end_max = date_end session.add(y) reader = csv2.DictReader(src, encoding='latin1') reader.fieldnames = [utils.camel2under(x) for x in reader.fieldnames] war_cols = [x.name for x in model.War3.__table__.c] war_date_cols = [x.name for x in model.War3Date.__table__.c] for row in reader: for k, v in row.iteritems(): row[k] = utils.replmiss(v, lambda x: x in ("-999", "-888")) ## Inter-state war does not have a war_type if 'war_type' not in row.keys(): row['war_type'] = 1 row['oceania'] = row['oceania'] if row['oceania'] else False session.add(model.War3(**utils.subset(row, war_cols))) ## Dates for i in (1, 2): _dates(row, i) session.commit()
def load_war3(src): """ Load COW War Data v. 3 """ session = model.SESSION() def _int(x): try: return int(x) except TypeError: return None def _dates(row, n): if row['yr_beg%d' % n]: y = model.War3Date() y.war_no = row['war_no'] y.spell_no = n date_beg = utils.daterng(_int(row['yr_beg%d' % n]), _int(row['mon_beg%d' % n]), _int(row['day_beg%d' % n])) y.date_beg_min, y.date_beg_max = date_beg date_end = utils.daterng(_int(row['yr_end%d' % n]), _int(row['mon_end%d' % n]), _int(row['day_end%d' % n])) y.date_end_min, y.date_end_max = date_end session.add(y) reader = csv2.DictReader(src, encoding='latin1') reader.fieldnames = [utils.camel2under(x) for x in reader.fieldnames] war_cols = [x.name for x in model.War3.__table__.c] war_date_cols = [x.name for x in model.War3Date.__table__.c] for row in reader: for k,v in row.iteritems(): row[k] = utils.replmiss(v, lambda x: x in ("-999", "-888")) ## Inter-state war does not have a war_type if 'war_type' not in row.keys(): row['war_type'] = 1 row['oceania'] = row['oceania'] if row['oceania'] else False session.add(model.War3(**utils.subset(row, war_cols))) ## Dates for i in (1, 2): _dates(row, i) session.commit()