def export_buildings(): i = 0 blist = [] bitems = buildings.items() log("processing %s buildings"%(len(bitems),), 1) for b_id, bdata in bitems: addr = bdata["address"] building = Building.query(Building.address == addr).get() owner = Owner.query(Owner.name == bdata["owner"]).get() byear = bdata["year"] btype = bdata["building_type"] if not building: log("Can't find building '%s' -- creating new entry"%(addr,), 2) building = Building(address=addr) if owner: building.owner = owner.key if byear: building.year = byear if btype: building.building_type = btype if b_id: building.building_id = b_id if not building.zipcode: zc = _zip(bdata["zipcode"], addr) if zc: building.zipcode = zc if not building.latitude or not building.longitude: building.latitude, building.longitude = address2latlng(building.address) blist.append(building) i += 1 if not i % 100: log("processed %s buildings"%(i,), 2) log("saving buildings", 1) db.put_multi(blist)
def export_owners(): i = 0 olist = [] oitems = owners.items() log("processing %s owners"%(len(oitems),), 1) for name, odata in oitems: if not name: log("no name for owner: %s"%(json.dumps(odata),), important=True) elif not Owner.query(Owner.name == name).get(): log("Can't find owner '%s' -- creating new entry"%(name,), 2) owner = Owner(name=name) if odata["address"]: owner.address, zc = odata["address"].rsplit(" ", 1) zcode = _zip(zc, owner.address) if zcode: owner.zipcode = zcode else: log("no address for %s!"%(name,), important=True) olist.append(owner) i += 1 if not i % 100: log("processed %s owners"%(i,), 2) log("saving %s owners"%(len(olist),), 1) db.put_multi(olist)