def addToTik(fileName, session): success = True dbsession = session tiks_from_db = get_tiks_from_db(dbsession) stat = {'count_in_db': 0, 'updated': 0, 'created': 0} with transaction.manager: with open(fileName, 'rb') as csvFile: reader = csv.DictReader(csvFile) for row in reader: tik_id = int(row['tik_id']) tik_name = row['tik'].decode('utf-8') tik_region_id = int(row['auto_code']) if tik_id in tiks_from_db: stat['count_in_db'] += 1 print 'REG: %(reg_id)s\tTIK: %(tik_id)s\talready exists in db' % { 'reg_id': row['auto_code'], 'tik_id': tik_id } validate_tik_db_region(tiks_from_db[tik_id], tik_region_id) if validate_tik_db_name(tiks_from_db[tik_id], tik_name) is False: dbsession.query(Tik).filter(Tik.id == tik_id).update( {'name': tik_name}) stat['updated'] += 1 print 'REG: %(reg_id)s\tTIK: %(tik_id)s\twas updated' % { 'reg_id': row['auto_code'], 'tik_id': tik_id } continue tik = Tik() tik.id = tik_id tik.name = tik_name tik.region_id = row['auto_code'] dbsession.add(tik) stat['created'] += 1 print 'REG: %(reg_id)s\tTIK: %(tik_id)s\t was added' % { 'reg_id': tik.region_id, 'tik_id': tik.id } print stat return success
def addToTik(fileName, session): success = True dbsession = session tiks_from_db = get_tiks_from_db(dbsession) stat = {"count_in_db": 0, "updated": 0, "created": 0} with transaction.manager: with open(fileName, "rb") as csvFile: reader = csv.DictReader(csvFile) for row in reader: tik_id = int(row["tik_id"]) tik_name = row["tik"].decode("utf-8") tik_region_id = int(row["auto_code"]) if tik_id in tiks_from_db: stat["count_in_db"] += 1 print "REG: %(reg_id)s\tTIK: %(tik_id)s\talready exists in db" % { "reg_id": row["auto_code"], "tik_id": tik_id, } validate_tik_db_region(tiks_from_db[tik_id], tik_region_id) if validate_tik_db_name(tiks_from_db[tik_id], tik_name) is False: dbsession.query(Tik).filter(Tik.id == tik_id).update({"name": tik_name}) stat["updated"] += 1 print "REG: %(reg_id)s\tTIK: %(tik_id)s\twas updated" % { "reg_id": row["auto_code"], "tik_id": tik_id, } continue tik = Tik() tik.id = tik_id tik.name = tik_name tik.region_id = row["auto_code"] dbsession.add(tik) stat["created"] += 1 print "REG: %(reg_id)s\tTIK: %(tik_id)s\t was added" % {"reg_id": tik.region_id, "tik_id": tik.id} print stat return success
def addToTik(fileName, session, regionID=None): """ Если указан regionID, то ВСЕ участки этого региона удаляются, затем из файла импортируются ТИКи данного региона. Внимание!!! Здесь также удаляются УИКи, привязанные к региону. Если не указан regionID, то импортируется все ТИКи. """ processAll = (regionID==None) success = True dbsession = session with transaction.manager: if not processAll: dbsession.query(Uik).filter(Uik.region_id==regionID).delete() dbsession.query(Tik).filter(Tik.region_id==regionID).delete() with open(fileName, 'rb') as csvFile: reader = csv.DictReader(csvFile) for row in reader: if processAll or row['auto_code'] == regionID: tik = Tik() tik.id = row['tik_id'] tik.name = row['tik'] tik.link_orig = row['link_orig'] tik.link_save = row['link_save'] tik.region_id = row['auto_code'] dbsession.add(tik) return success