Beispiel #1
0
def main(argv):
  # variables that are given as arguments with possible default values
  command = ""
  expect = ""
  verbose = False
  return_wanted = False

  try:
    opts, args = getopt.getopt(argv,"c:e:v:r",["command=","expect=","verbose","return"])
  except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)
  for opt, arg in opts:
    if opt in ("-c", "--command"): command = arg
    elif opt in ("-e", "--expect"): expect = arg
    elif opt in ("-v", "--verbose"): verbose = True
    elif opt in ("-r", "--return"): return_wanted = True
  if not command:
    usage()
    sys.exit(2)

  if expect:
    verbose = False # would interfere with "return" value
  ret = load(command,expect,verbose)
  if expect:
     if return_wanted:
         return ret
     else:
         print ret

  dboperator.close()
Beispiel #2
0
def load(command,expect,verbose=False):
  if verbose: show("begin with "+command) # no point in trying to show expect!

  sql = command
  ret = None
  try:
    # quick hack for getting return value. do fix me!
    if expect:
      resql = dboperator.get(sql)
      if verbose: show("command returned %d rows"%(len(resql)))
      # print out (as a return value) the entire result or row count or what, some kind of figuring?
      if expect=='row count':
        ret = len(resql)
      elif len(resql)==1 and expect in resql[0]:
        ret = resql[0][expect]
      else:
        ret = resql
    else:
      dboperator.execute(sql)
  except:
    show("Something went wrong. Over and out.")
    dboperator.close()
    exit(2) # lopeta virheeseen

  if verbose: show("ready")
  return ret
def load(command,expect,verbose=False):
  if verbose: show("begin with "+command) # no point in trying to show expect!

  sql = command
  ret = None

  try:
    # quick hack for getting return value. do fix me!
    if expect:
      resql = dboperator.get(sql)
      if verbose: show("command returned %d rows"%(len(resql)))
      # print out (as a return value) the entire result or row count or what, some kind of figuring?
      if expect=='row count':
        ret = len(resql)
      elif len(resql)==1 and expect in resql[0]:
        ret = resql[0][expect]
      else:
        ret = resql
    else:
      dboperator.execute(sql)
  except Exception, f:
    print(f)
    e = sys.exc_info()[0] #for debugging error 1.11.2018 VHä
    show("Something went wrong. Over and out. %s" % e)
    dboperator.close()
    exit(2) # lopeta virheeseen
Beispiel #4
0
def main(argv):
    # muuttujat jotka kerrotaan argumentein
    url = ""
    schema = ""
    table = ""
    condition = None

    try:
        opts, args = getopt.getopt(argv, "u:e:t:c",
                                   ["url=", "schema=", "table=", "condition="])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-u", "--url"):
            url = arg
        elif opt in ("-e", "--schema"):
            schema = arg
        elif opt in ("-t", "--table"):
            table = arg
        elif opt in ("-c", "--condition"):
            condition = arg
    if not url or not schema or not table:
        usage()
        sys.exit(2)

    load(url, schema, table, condition)
    dboperator.close()
Beispiel #5
0
def main(argv):
  # muuttujat jotka kerrotaan argumentein
  secure=False
  hostname,url,schema,table="","","",""
  postdata=None
  condition=None
  verbose=False
  rowcount = 500

  try:
    opts,args=getopt.getopt(argv,"sH:u:e:t:p:c:v:r",["secure","hostname=","url=","schema=","table=","postdata=","condition=","verbose","rowcount="])
  except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)
  for opt,arg in opts:
    if opt in ("-s", "--secure"): secure=True
    elif opt in ("-H", "--hostname"): hostname=arg
    elif opt in ("-u", "--url"): url=arg
    elif opt in ("-e", "--schema"): schema=arg
    elif opt in ("-t", "--table"): table=arg
    elif opt in ("-p", "--postdata"): postdata=arg
    elif opt in ("-c", "--condition"): condition=arg
    elif opt in ("-v", "--verbose"): verbose=True
    elif opt in ("-r", "--rowcount"): rowcount=arg
  if not hostname or not url or not schema or not table:
    usage()
    sys.exit(2)

  load(secure,hostname,url,schema,table,postdata,condition,verbose, rowcount)

  dboperator.close()
def main(argv):
  # muuttujat jotka kerrotaan argumentein
  secure=False
  hostname,url,schema,table="","","",""
  postdata=None
  condition=None
  verbose=False

  try:
    opts,args=getopt.getopt(argv,"sH:u:e:t:p:c:v",["secure","hostname=","url=","schema=","table=","postdata=","condition=","verbose"])
  except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)
  for opt,arg in opts:
    if opt in ("-s", "--secure"): secure=True
    elif opt in ("-H", "--hostname"): hostname=arg
    elif opt in ("-u", "--url"): url=arg
    elif opt in ("-e", "--schema"): schema=arg
    elif opt in ("-t", "--table"): table=arg
    elif opt in ("-p", "--postdata"): postdata=arg
    elif opt in ("-c", "--condition"): condition=arg
    elif opt in ("-v", "--verbose"): verbose=True
  if not hostname or not url or not schema or not table:
    usage()
    sys.exit(2)

  load(secure,hostname,url,schema,table,postdata,condition,verbose)

  dboperator.close()
def main(argv):
  # variables that are given as arguments with possible default values
  command = ""
  expect = ""
  verbose = False
  return_wanted = False

  try:
    opts, args = getopt.getopt(argv,"c:e:v:r",["command=","expect=","verbose","return"])
  except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)
  for opt, arg in opts:
    if opt in ("-c", "--command"): command = arg
    elif opt in ("-e", "--expect"): expect = arg
    elif opt in ("-v", "--verbose"): verbose = True
    elif opt in ("-r", "--return"): return_wanted = True
  if not command:
    usage()
    sys.exit(2)

  if expect:
    verbose = False # would interfere with "return" value
  ret = load(command,expect,verbose)
  if expect:
     if return_wanted:
         return ret
     else:
         print ret

  dboperator.close()
def load(sqlfile,migrate,verbose=False):
  show("begin "+sqlfile)

  number_togo = None
  if "__" in sqlfile:
    number_togo = int(sqlfile[sqlfile.rfind("/")+1:sqlfile.index("__",sqlfile.rfind("/")+1)])

  if migrate and number_togo is not None:
    # migration install step 0 is special, just add the table for others
    if number_togo==0:
      loadsql(sqlfile,verbose)
    else:
      number_last = None
      result = dboperator.get("select max(number) as number from dbo.migration where phase='%s'"%(migrate))
      if result[0]["number"] is not None:
        number_last = int(result[0]["number"])

      if verbose: show("migrating %s which is going on at %s and now trying %s"%(migrate,number_last,number_togo))

      if number_last is None or number_togo > number_last:
        show("Migrating from %s to %s"%(number_last,number_togo))
        loadsql(sqlfile,verbose)
        result = dboperator.execute("insert into migration (phase,number) values ('%s',%s)"%(migrate,number_togo))
      else:
        if verbose: show("skipping migration %s < %s"%(number_togo,number_last))

  else:
    loadsql(sqlfile,verbose)

  dboperator.close()
  show("ready")
Beispiel #9
0
def main(argv):
    # variables from arguments with possible defaults
    hostname = os.getenv("OPINTOPOLKU") or "virkailija.testiopintopolku.fi"
    url = "/tarjonta-service/rest/v1/haku/findAll"
    schema = os.getenv("SCHEMA") or "sa"
    table = os.getenv("TABLE") or "koulutustarjonta_haku"
    verbose, debug = False, False

    try:
        opts, args = getopt.getopt(
            argv, "H:u:e:t:c:vd",
            ["hostname=", "url=", "schema=", "table=", "verbose", "debug"])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-H", "--hostname"): hostname = arg
        elif opt in ("-u", "--url"): url = arg
        elif opt in ("-e", "--schema"): schema = arg
        elif opt in ("-t", "--table"): table = arg
        elif opt in ("-v", "--verbose"): verbose = True
        elif opt in ("-d", "--debug"): debug = True
    if not hostname or not url or not schema or not table:
        usage()
        sys.exit(2)

    if debug: print("debugging")

    load(hostname, url, schema, table, verbose, debug)

    dboperator.close(debug)
def main(argv):
    # muuttujat jotka kerrotaan argumentein
    url = ""
    schema = ""
    table = ""
    condition = None

    try:
        opts, args = getopt.getopt(argv, "u:e:t:c", ["url=", "schema=", "table=", "condition="])
    except getopt.GetoptError as err:
        print(err)
        usage()
        sys.exit(2)
    for opt, arg in opts:
        if opt in ("-u", "--url"):
            url = arg
        elif opt in ("-e", "--schema"):
            schema = arg
        elif opt in ("-t", "--table"):
            table = arg
        elif opt in ("-c", "--condition"):
            condition = arg
    if not url or not schema or not table:
        usage()
        sys.exit(2)

    load(url, schema, table, condition)
    dboperator.close()
def main(argv):
  # variables from arguments with possible defaults
  hostname = os.getenv("OPINTOPOLKU") or "virkailija.testiopintopolku.fi"
  url = "/tarjonta-service/rest/v1/hakukohde"
  schema = os.getenv("SCHEMA") or "sa"
  table = os.getenv("TABLE") or "koulutustarjonta_hakukohde"
  verbose,debug = False,False

  try:
    opts, args = getopt.getopt(argv,"H:u:e:t:c:vd",["hostname=","url=","schema=","table=","verbose","debug"])
  except getopt.GetoptError as err:
    print(err)
    usage()
    sys.exit(2)
  for opt, arg in opts:
    if opt in ("-H", "--hostname"): hostname = arg
    elif opt in ("-u", "--url"): url = arg
    elif opt in ("-e", "--schema"): schema = arg
    elif opt in ("-t", "--table"): table = arg
    elif opt in ("-v", "--verbose"): verbose = True
    elif opt in ("-d", "--debug"): debug = True
  if not hostname or not url or not schema or not table:
    usage()
    sys.exit(2)

  if debug: print "debugging"

  load(hostname,url,schema,table,verbose,debug)

  dboperator.close(debug)
Beispiel #12
0
def load(secure, hostname, url, schema, table, codeset, verbose=False):
    if verbose: show("begin")

    row = makerow()
    dboperator.columns(row)

    if verbose: show("empty %s.%s" % (schema, table))
    dboperator.empty(schema, table)

    url = url % codeset  # replace placeholder
    if secure:
        httpconn = httplib.HTTPSConnection(hostname)
        show("load securely from " + hostname + url)
    else:
        httpconn = httplib.HTTPConnection(hostname)
        show("load from " + hostname + url)

    httpconn.request('GET', url)
    r = httpconn.getresponse()
    j = json.loads(r.read())
    cnt = 0
    for i in j:
        cnt += 1
        row = makerow()

        row["koodi"] = jv(i, "koodiArvo")
        row["nimi"] = getnimi(i, "FI")
        row["nimi_sv"] = getnimi(i, "SV")
        row["nimi_en"] = getnimi(i, "EN")
        row["alkupvm"] = jv(i, "voimassaAlkuPvm")
        row["loppupvm"] = jv(i, "voimassaLoppuPvm")

        httpconn.request(
            'GET',
            "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" %
            i["koodiUri"])
        rr = httpconn.getresponse()
        jj = json.loads(rr.read())
        ss = ""
        for ii in jj:
            classification = "maanosat"
            level = ""
            if len(ii["koodiArvo"]) == 3:
                level = "3"
            elif len(ii["koodiArvo"]) == 2:
                level = "2"
            # else default
            if ii["koodisto"]["koodistoUri"] == classification:
                row[classification + level + "koodi"] = jv(ii, "koodiArvo")
                row[classification + level + "nimi"] = getnimi(ii, "FI")
                row[classification + level + "nimi_sv"] = getnimi(ii, "SV")
                row[classification + level + "nimi_en"] = getnimi(ii, "EN")

        if verbose: show("%d -- %s" % (cnt, row["koodi"]))
        dboperator.insert(hostname + url, schema, table, row)

    dboperator.close()

    if verbose: show("ready")
Beispiel #13
0
def load(secure, hostname, url, schema, table, codeset, verbose=False):
    if verbose: show("begin")

    # make "columnlist" separately (type has no meaning as we're not creating table)
    row = {
        'koodisto': None,
        'koodi': None,
        'nimi': None,
        'nimi_sv': None,
        'nimi_en': None,
        'alkupvm': None,
        'loppupvm': None
    }
    # setup dboperator variables so insert works
    dboperator.columns(row)

    #show("empty sa_koodistot")
    #dboperator.empty("sa_koodistot")

    reqheaders = {
        'Content-Type': 'application/json',
        'Caller-Id': '1.2.246.562.10.2013112012294919827487.vipunen'
    }

    url = url % codeset
    address = hostname + url
    if secure:
        show("load securely from " + address)
        httpconn = httplib.HTTPSConnection(hostname)
    else:
        show("load from " + address)
        httpconn = httplib.HTTPConnection(hostname)

    httpconn.request('GET', url, headers=reqheaders)
    #httpconn.request('GET', url)
    r = httpconn.getresponse()
    j = json.loads(r.read())
    cnt = 0
    if verbose:
        show("delete from %s.%s where koodisto=%s" % (schema, table, codeset))
    dboperator.remove(schema, table, "koodisto", codeset)
    for i in j:
        cnt += 1
        # make "row"
        row["koodisto"] = codeset
        # columns
        row["koodi"] = i["koodiArvo"]
        row["nimi"] = getnimi(i, "FI")
        row["nimi_sv"] = getnimi(i, "SV")
        row["nimi_en"] = getnimi(i, "EN")
        row["alkupvm"] = i["voimassaAlkuPvm"]
        row["loppupvm"] = i["voimassaLoppuPvm"]

        if verbose: show("-- %s -- %d -- %s" % (codeset, cnt, row["koodi"]))
        dboperator.insert(address, schema, table, row)

    dboperator.close()

    if verbose: show("ready")
def load(secure,hostname,url,schema,table,codeset,verbose=False):
  if verbose: show("begin")

  row = makerow()
  dboperator.columns(row)

  if verbose: show("empty %s.%s"%(schema,table))
  dboperator.empty(schema,table)

  url = url % codeset # replace placeholder
  if secure:
    httpconn = httplib.HTTPSConnection(hostname)
    show("load securely from "+hostname+url)
  else:
    httpconn = httplib.HTTPConnection(hostname)
    show("load from "+hostname+url)

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  for i in j:
    cnt += 1
    row = makerow()

    row["koodi"] = jv(i,"koodiArvo")
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"EN")
    row["alkupvm"] = jv(i,"voimassaAlkuPvm")
    row["loppupvm"] = jv(i,"voimassaLoppuPvm")

    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      classification = "maanosat"
      level = ""
      if len(ii["koodiArvo"])==3:
        level = "3"
      elif len(ii["koodiArvo"])==2:
        level = "2"
      # else default
      if ii["koodisto"]["koodistoUri"] == classification:
        row[classification+level+"koodi"] = jv(ii,"koodiArvo")
        row[classification+level+"nimi"] = getnimi(ii,"FI")
        row[classification+level+"nimi_sv"] = getnimi(ii,"SV")
        row[classification+level+"nimi_en"] = getnimi(ii,"EN")

    if verbose: show("%d -- %s"%(cnt,row["koodi"]))
    dboperator.insert(hostname+url,schema,table,row)

  dboperator.close()

  if verbose: show("ready")
Beispiel #15
0
def load(schema,procedure,verbose=False):
  show("begin with "+schema+" "+procedure)

  sql = "execute "+schema+"."+procedure
  try:
    dboperator.execute(sql)
  except:
    show("Something went wrong. Probably procedure wasn't found or there is a permission problem. Over and out.")
    dboperator.close()
    exit(2) # lopeta virheeseen

  dboperator.close()

  show("ready")
def load(secure,hostname,url,schema,table,codeset,verbose=False,debug=False):
  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" begin"

  row = makerow()
  dboperator.columns(row,debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" empty %s.%s"%(schema,table)
  dboperator.empty(schema,table,debug)

  url = url % codeset # replace placeholder
  if secure:
    httpconn = httplib.HTTPSConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load securely from "+hostname+url
  else:
    httpconn = httplib.HTTPConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load from "+hostname+url

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  for i in j:
    cnt += 1
    row = makerow()

    row["koodi"] = jv(i,"koodiArvo")
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"EN")
    row["alkupvm"] = jv(i,"voimassaAlkuPvm")
    row["loppupvm"] = jv(i,"voimassaLoppuPvm")

    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      if ii["koodisto"]["koodistoUri"] == "julkaisunpaaluokka":
        row["julkaisunpaaluokkakoodi"] = jv(ii,"koodiArvo")
        row["julkaisunpaaluokkanimi"] = getnimi(ii,"FI")
        row["julkaisunpaaluokkanimi_sv"] = getnimi(ii,"SV")
        row["julkaisunpaaluokkanimi_en"] = getnimi(ii,"EN")

    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" %d -- %s"%(cnt,row["koodi"])
    dboperator.insert(hostname+url,schema,table,row,debug)

  dboperator.close(debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" ready"
def load(secure,hostname,url,schema,table,codeset,verbose=False,debug=False):
  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" begin"

  row = makerow()
  dboperator.columns(row,debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" empty %s.%s"%(schema,table)
  dboperator.empty(schema,table,debug)

  url = url % codeset # replace placeholder
  if secure:
    httpconn = httplib.HTTPSConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load securely from "+hostname+url
  else:
    httpconn = httplib.HTTPConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load from "+hostname+url

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  for i in j:
    cnt += 1
    row = makerow()

    row["koodi"] = jv(i,"koodiArvo")
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"EN")
    row["alkupvm"] = jv(i,"voimassaAlkuPvm")
    row["loppupvm"] = jv(i,"voimassaLoppuPvm")

    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      if ii["koodisto"]["koodistoUri"] == "paatieteenala":
        row["paatieteenalakoodi"] = jv(ii,"koodiArvo")
        row["paatieteenalanimi"] = getnimi(ii,"FI")
        row["paatieteenalanimi_sv"] = getnimi(ii,"SV")
        row["paatieteenalanimi_en"] = getnimi(ii,"EN")

    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" %d -- %s"%(cnt,row["koodi"])
    dboperator.insert(hostname+url,schema,table,row,debug)

  dboperator.close(debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" ready"
Beispiel #18
0
def load(database, schema, procedure, parameters, verbose=False):
    show("begin with " + database + " " + schema + " " + procedure + " " +
         parameters)
    sql = "execute " + database + "." + schema + "." + procedure
    if (parameters != ""):
        sql = "execute " + database + "." + schema + "." + procedure + " " + parameters

    result = dboperator.execute(sql)
    #succesful execution result returns 1, anything else is error message
    if (result != 1):
        show("A MSSQL error has been caught during executing " + procedure)
        show("Error code: " + result)
        dboperator.close()
        exit(2)  # lopeta virheeseen

    dboperator.close()
    show("ready")
Beispiel #19
0
def load(sqlfile, migrate, verbose=False):
    show("begin " + sqlfile)

    number_togo = None
    if "__" in sqlfile:
        number_togo = int(sqlfile[sqlfile.rfind("/") +
                                  1:sqlfile.index("__",
                                                  sqlfile.rfind("/") + 1)])

    if migrate and number_togo is not None:
        # migration install step 0 is special, just add the table for others
        if number_togo == 0:
            loadsql(sqlfile, verbose)
        else:
            number_last = None
            result = dboperator.get(
                "select max(number) as number from antero.dbo.migration where phase='%s'"
                % (migrate))
            if result[0]["number"] is not None:
                number_last = int(result[0]["number"])

            if verbose:
                show("migrating %s which is going on at %s and now trying %s" %
                     (migrate, number_last, number_togo))

            if number_last is None or number_togo > number_last:
                show("Migrating from %s to %s" % (number_last, number_togo))
                loadsql(sqlfile, verbose)
                result = dboperator.execute(
                    "insert into antero.dbo.migration (phase,number) values ('%s',%s)"
                    % (migrate, number_togo))
                if (result != 1):
                    show(result)
                    exit(2)
            else:
                if verbose:
                    show("skipping migration %s < %s" %
                         (number_togo, number_last))

    else:
        loadsql(sqlfile, verbose)

    dboperator.close()
    show("ready")
def load(secure,hostname,url,schema,table,codeset,verbose=False):
  if verbose: show("begin")

  # make "columnlist" separately (type has no meaning as we're not creating table)
  row = {'koodisto':None,'koodi':None,'nimi':None,'nimi_sv':None,'nimi_en':None,'alkupvm':None,'loppupvm':None}
  # setup dboperator variables so insert works
  dboperator.columns(row)

  #show("empty sa_koodistot")
  #dboperator.empty("sa_koodistot")

  url = url % codeset
  address = hostname+url
  if secure:
    show("load securely from "+address)
    httpconn = httplib.HTTPSConnection(hostname)
  else:
    show("load from "+address)
    httpconn = httplib.HTTPConnection(hostname)

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  if verbose: show("delete from %s.%s where koodisto=%s"%(schema,table,codeset))
  dboperator.remove(schema,table,"koodisto",codeset)
  for i in j:
    cnt += 1
    # make "row"
    row["koodisto"] = codeset
    # columns
    row["koodi"] = i["koodiArvo"]
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"EN")
    row["alkupvm"] = i["voimassaAlkuPvm"]
    row["loppupvm"] = i["voimassaLoppuPvm"]

    if verbose: show("-- %s -- %d -- %s"%(codeset,cnt,row["koodi"]))
    dboperator.insert(address,schema,table,row)

  dboperator.close()

  if verbose: show("ready")
Beispiel #21
0
def load(secure,
         hostname,
         url,
         schema,
         table,
         codeset,
         verbose=False,
         debug=False):
    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " begin")

    # make "columnlist" (type has no meaning as we're not creating table)
    row = makerow()
    # setup dboperator so other calls work
    dboperator.columns(row, debug)

    if verbose:
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " empty %s.%s" %
            (schema, table))
    dboperator.empty(schema, table, debug)

    reqheaders = {'Content-Type': 'application/json'}
    reqheaders['Caller-Id'] = '1.2.246.562.10.2013112012294919827487.vipunen'

    url = ""  # replace with hardcoded values below
    if secure:
        httpconn = httplib.HTTPSConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) +
            " load securely from " + hostname + url)
    else:
        httpconn = httplib.HTTPConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " load from " +
            hostname + url)

    links = [
        "/organisaatio-service/rest/organisaatio/v2/hierarkia/hae?organisaatiotyyppi=Koulutustoimija&aktiiviset=true&suunnitellut=true&lakkautetut=false",
        "/organisaatio-service/rest/organisaatio/v2/hierarkia/hae?organisaatiotyyppi=Koulutustoimija&aktiiviset=false&suunnitellut=false&lakkautetut=true"
    ]
    for url in links:
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " load from " +
            hostname + url)
        httpconn.request('GET', url, headers=reqheaders)
        #httpconn.request('GET', url)
        r = httpconn.getresponse()
        j = json.loads(r.read())
        cnt = 0
        for i in j["organisaatiot"]:
            # make "row" (clear values)
            row = makerow()

            row["jarjestajaoid"] = i["oid"]
            row["jarjestajakoodi"] = None if "ytunnus" not in i else i[
                "ytunnus"]  # may be None
            row["jarjestajanimi"] = None if "fi" not in i["nimi"] else i[
                "nimi"]["fi"]
            row["jarjestajanimi_sv"] = None if "sv" not in i["nimi"] else i[
                "nimi"]["sv"]
            row["jarjestajanimi_en"] = None if "en" not in i["nimi"] else i[
                "nimi"]["en"]

            for o in i["children"]:
                if "oppilaitosKoodi" in o:
                    cnt += 1
                    # sarakkeet
                    row["oid"] = o["oid"]
                    row["koodi"] = o["oppilaitosKoodi"]
                    row["nimi"] = None if "fi" not in o["nimi"] else o["nimi"][
                        "fi"]
                    row["nimi_sv"] = None if "sv" not in o["nimi"] else o[
                        "nimi"]["sv"]
                    row["nimi_en"] = None if "en" not in o["nimi"] else o[
                        "nimi"]["en"]
                    row["alkupvm"] = "1900-1-1" if "alkuPvm" not in o or o[
                        "alkuPvm"] < 0 else strftime(
                            "%Y-%m-%d", localtime(o["alkuPvm"] / 1000))
                    row["loppupvm"] = None if "lakkautusPvm" not in o else strftime(
                        "%Y-%m-%d", localtime(o["lakkautusPvm"] / 1000))

                    row["kuntakoodi"] = o["kotipaikkaUri"].replace(
                        "kunta_", "")
                    # => text values separately
                    row["oppilaitostyyppikoodi"] = o[
                        "oppilaitostyyppi"].replace("oppilaitostyyppi_",
                                                    "").replace("#1", "")
                    # => text values separately

                    # get address

                    #httpconn.request('GET', "/organisaatio-service/rest/organisaatio/"+row["oid"]reqheaders)
                    httpconn.request(
                        'GET',
                        "/organisaatio-service/rest/organisaatio/" +
                        row["oid"],
                        headers=reqheaders)
                    rr = httpconn.getresponse()
                    jj = json.loads(rr.read())
                    if jj["kayntiosoite"]:
                        row["osoite"] = jj["kayntiosoite"]["osoite"]
                        row["postinumero"] = None if "postinumeroUri" not in jj[
                            "kayntiosoite"] else jj["kayntiosoite"][
                                "postinumeroUri"].replace("posti_", "")
                        if "postitoimipaikka" in jj["kayntiosoite"]:
                            row["postitoimipaikka"] = jj["kayntiosoite"][
                                "postitoimipaikka"]
                        elif "postitoimipaikka" in jj["postiosoite"]:
                            row["postitoimipaikka"] = jj["postiosoite"][
                                "postitoimipaikka"]
                        else:
                            row["postitoimipaikka"] = None

                    elif jj["postiosoite"]:
                        row["osoite"] = jj["postiosoite"]["osoite"]
                        if jj["postiosoite"]["postinumeroUri"]:
                            row["postinumero"] = jj["postiosoite"][
                                "postinumeroUri"].replace("posti_", "")
                        row["postitoimipaikka"] = jj["postiosoite"][
                            "postitoimipaikka"]

                    # todo get coordinates (see geocoding.py)

                    if verbose:
                        print(
                            strftime("%Y-%m-%d %H:%M:%S", localtime()) +
                            " %d -- %s" % (cnt, row["koodi"]))
                    dboperator.insert(hostname + url, schema, table, row,
                                      debug)

    dboperator.close(debug)

    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " ready")
Beispiel #22
0
def load(secure,
         hostname,
         url,
         schema,
         table,
         codeset,
         verbose=False,
         debug=False):
    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " begin")

    row = makerow()
    dboperator.columns(row, debug)

    if verbose:
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " empty %s.%s" %
            (schema, table))
    dboperator.empty(schema, table, debug)

    url = url % codeset  # replace placeholder
    if secure:
        httpconn = httplib.HTTPSConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) +
            " load securely from " + hostname + url)
    else:
        httpconn = httplib.HTTPConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " load from " +
            hostname + url)

    reqheaders = {'Caller-Id': '1.2.246.562.10.2013112012294919827487.vipunen'}
    httpconn.request('GET', url, headers=reqheaders)
    #httpconn.request('GET', url)

    r = httpconn.getresponse()
    j = json.loads(r.read())
    cnt = 0
    for i in j:
        cnt += 1
        row = makerow()

        row["koodi"] = jv(i, "koodiArvo")
        row["nimi"] = getnimi(i, "FI")
        row["nimi_sv"] = getnimi(i, "SV")
        row["nimi_en"] = getnimi(i, "FI")
        row["alkupvm"] = jv(i, "voimassaAlkuPvm")
        row["loppupvm"] = jv(i, "voimassaLoppuPvm")

        # classifications (nb! avi is in different direction!)
        httpconn.request(
            'GET',
            "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" %
            i["koodiUri"],
            headers=reqheaders)
        rr = httpconn.getresponse()
        jj = json.loads(rr.read())
        for ii in jj:
            if ii["koodisto"]["koodistoUri"] == "aluehallintovirasto":
                row["avikoodi"] = jv(ii, "koodiArvo")
                row["avinimi"] = getnimi(ii, "FI")
                row["avinimi_sv"] = getnimi(ii, "SV")
                row["avinimi_en"] = getnimi(ii, "EN")
        # other classifications
        httpconn.request(
            'GET',
            "/koodisto-service/rest/json/relaatio/sisaltyy-alakoodit/%s" %
            i["koodiUri"],
            headers=reqheaders)
        rr = httpconn.getresponse()
        jj = json.loads(rr.read())
        for ii in jj:
            if ii["koodisto"]["koodistoUri"] == "maakunta":
                row["maakuntakoodi"] = jv(ii, "koodiArvo")
                row["maakuntanimi"] = getnimi(ii, "FI")
                row["maakuntanimi_sv"] = getnimi(ii, "SV")
                row["maakuntanimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "elykeskus":
                row["elykoodi"] = jv(ii, "koodiArvo")
                row["elynimi"] = getnimi(ii, "FI")
                row["elynimi_sv"] = getnimi(ii, "SV")
                row["elynimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "kielisuhde":
                row["kielisuhdekoodi"] = jv(ii, "koodiArvo")
                row["kielisuhdenimi"] = getnimi(ii, "FI")
                row["kielisuhdenimi_sv"] = getnimi(ii, "SV")
                row["kielisuhdenimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "seutukunta":
                row["seutukuntakoodi"] = jv(ii, "koodiArvo")
                row["seutukuntanimi"] = getnimi(ii, "FI")
                row["seutukuntanimi_sv"] = getnimi(ii, "SV")
                row["seutukuntanimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "laani":
                row["laanikoodi"] = jv(ii, "koodiArvo")
                row["laaninimi"] = getnimi(ii, "FI")
                row["laaninimi_sv"] = getnimi(ii, "SV")
                row["laaninimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "kuntaryhma":
                row["kuntaryhmakoodi"] = jv(ii, "koodiArvo")
                row["kuntaryhmanimi"] = getnimi(ii, "FI")
                row["kuntaryhmanimi_sv"] = getnimi(ii, "SV")
                row["kuntaryhmanimi_en"] = getnimi(ii, "EN")

        if verbose:
            print(
                strftime("%Y-%m-%d %H:%M:%S", localtime()) + " %d -- %s" %
                (cnt, row["koodi"]))
        dboperator.insert(hostname + url, schema, table, row, debug)

    dboperator.close(debug)

    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " ready")
Beispiel #23
0
def load(secure,
         hostname,
         url,
         schema,
         table,
         codeset,
         verbose=False,
         debug=False):
    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime()) + " begin"

    row = makerow()
    dboperator.columns(row, debug)

    if verbose:
        print strftime("%Y-%m-%d %H:%M:%S",
                       localtime()) + " empty %s.%s" % (schema, table)
    dboperator.empty(schema, table, debug)

    url = url % codeset  # korvaa placeholder
    if secure:
        httpconn = httplib.HTTPSConnection(hostname)
        print strftime("%Y-%m-%d %H:%M:%S",
                       localtime()) + " load securely from " + hostname + url
    else:
        httpconn = httplib.HTTPConnection(hostname)
        print strftime("%Y-%m-%d %H:%M:%S",
                       localtime()) + " load from " + hostname + url

    httpconn.request('GET', url)
    r = httpconn.getresponse()
    j = json.loads(r.read())
    cnt = 0
    for i in j:
        cnt += 1
        row = makerow()

        row["koodi"] = i["koodiArvo"]
        row["nimi"] = getnimi(i, "FI")
        row["nimi_sv"] = getnimi(i, "SV")
        row["nimi_en"] = getnimi(i, "FI")
        row["alkupvm"] = i["voimassaAlkuPvm"]
        row["loppupvm"] = i["voimassaLoppuPvm"]

        httpconn.request(
            'GET',
            "/koodisto-service/rest/json/relaatio/sisaltyy-alakoodit/%s" %
            i["koodiUri"])
        rr = httpconn.getresponse()
        jj = json.loads(rr.read())
        ss = ""
        for ii in jj:
            if ii["koodisto"]["koodistoUri"] == "koulutusasteoph2002":
                row["koulutusaste2002koodi"] = ii["koodiArvo"]
                row["koulutusaste2002nimi"] = getnimi(ii, "FI")
                row["koulutusaste2002nimi_sv"] = getnimi(ii, "SV")
                row["koulutusaste2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusalaoph2002":
                row["koulutusala2002koodi"] = ii["koodiArvo"]
                row["koulutusala2002nimi"] = getnimi(ii, "FI")
                row["koulutusala2002nimi_sv"] = getnimi(ii, "SV")
                row["koulutusala2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "opintoalaoph2002":
                row["opintoala2002koodi"] = ii["koodiArvo"]
                row["opintoala2002nimi"] = getnimi(ii, "FI")
                row["opintoala2002nimi_sv"] = getnimi(ii, "SV")
                row["opintoala2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusasteoph1995":
                row["koulutusaste1995koodi"] = ii["koodiArvo"]
                row["koulutusaste1995nimi"] = getnimi(ii, "FI")
                row["koulutusaste1995nimi_sv"] = getnimi(ii, "SV")
                row["koulutusaste1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusalaoph1995":
                row["koulutusala1995koodi"] = ii["koodiArvo"]
                row["koulutusala1995nimi"] = getnimi(ii, "FI")
                row["koulutusala1995nimi_sv"] = getnimi(ii, "SV")
                row["koulutusala1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "opintoalaoph1995":
                row["opintoala1995koodi"] = ii["koodiArvo"]
                row["opintoala1995nimi"] = getnimi(ii, "FI")
                row["opintoala1995nimi_sv"] = getnimi(ii, "SV")
                row["opintoala1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "tutkinto":
                row["tutkintokoodi"] = ii["koodiArvo"]
                row["tutkintonimi"] = getnimi(ii, "FI")
                row["tutkintonimi_sv"] = getnimi(ii, "SV")
                row["tutkintonimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "tutkintotyyppi":
                row["tutkintotyyppikoodi"] = ii["koodiArvo"]
                row["tutkintotyyppinimi"] = getnimi(ii, "FI")
                row["tutkintotyyppinimi_sv"] = getnimi(ii, "SV")
                row["tutkintotyyppinimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutustyyppi":
                row["koulutustyyppikoodi"] = ii["koodiArvo"]
                row["koulutustyyppinimi"] = getnimi(ii, "FI")
                row["koulutustyyppinimi_sv"] = getnimi(ii, "SV")
                row["koulutustyyppinimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusaste":
                row["isced2011koulutusastekoodi"] = ii["koodiArvo"]
                row["isced2011koulutusastenimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastenimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastenimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso1":
                row["isced2011koulutusastetaso1koodi"] = ii["koodiArvo"]
                row["isced2011koulutusastetaso1nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastetaso1nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastetaso1nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso2":
                row["isced2011koulutusastetaso2koodi"] = ii["koodiArvo"]
                row["isced2011koulutusastetaso2nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastetaso2nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastetaso2nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso1":
                row["isced2011koulutusalataso1koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso1nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso1nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso1nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso2":
                row["isced2011koulutusalataso2koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso2nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso2nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso2nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso3":
                row["isced2011koulutusalataso3koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso3nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso3nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso3nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "okmohjauksenala":
                row["okmohjauksenalakoodi"] = ii["koodiArvo"]
                row["okmohjauksenalanimi"] = getnimi(ii, "FI")
                row["okmohjauksenalanimi_sv"] = getnimi(ii, "SV")
                row["okmohjauksenalanimi_en"] = getnimi(ii, "EN")

        if verbose:
            print strftime("%Y-%m-%d %H:%M:%S",
                           localtime()) + " %d -- %s" % (cnt, row["koodi"])
        dboperator.insert(hostname + url, schema, table, row, debug)

    dboperator.close(debug)

    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime()) + " ready"
def load(secure,hostname,url,schema,table,codeset,verbose=False,debug=False):
  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" begin"

  row = makerow()
  dboperator.columns(row,debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" empty %s.%s"%(schema,table)
  dboperator.empty(schema,table,debug)

  url = url % codeset # korvaa placeholder
  if secure:
    httpconn = httplib.HTTPSConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load securely from "+hostname+url
  else:
    httpconn = httplib.HTTPConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load from "+hostname+url

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  for i in j:
    cnt += 1
    row = makerow()

    row["koodi"] = i["koodiArvo"]
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"EN")
    row["alkupvm"] = i["voimassaAlkuPvm"]
    row["loppupvm"] = i["voimassaLoppuPvm"]

    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-alakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      if ii["koodisto"]["koodistoUri"] == "koulutusasteoph2002":
        row["koulutusaste2002koodi"] = ii["koodiArvo"]
        row["koulutusaste2002nimi"] = getnimi(ii,"FI")
        row["koulutusaste2002nimi_sv"] = getnimi(ii,"SV")
        row["koulutusaste2002nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "koulutusalaoph2002":
        row["koulutusala2002koodi"] = ii["koodiArvo"]
        row["koulutusala2002nimi"] = getnimi(ii,"FI")
        row["koulutusala2002nimi_sv"] = getnimi(ii,"SV")
        row["koulutusala2002nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "opintoalaoph2002":
        row["opintoala2002koodi"] = ii["koodiArvo"]
        row["opintoala2002nimi"] = getnimi(ii,"FI")
        row["opintoala2002nimi_sv"] = getnimi(ii,"SV")
        row["opintoala2002nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "koulutusasteoph1995":
        row["koulutusaste1995koodi"] = ii["koodiArvo"]
        row["koulutusaste1995nimi"] = getnimi(ii,"FI")
        row["koulutusaste1995nimi_sv"] = getnimi(ii,"SV")
        row["koulutusaste1995nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "koulutusalaoph1995":
        row["koulutusala1995koodi"] = ii["koodiArvo"]
        row["koulutusala1995nimi"] = getnimi(ii,"FI")
        row["koulutusala1995nimi_sv"] = getnimi(ii,"SV")
        row["koulutusala1995nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "opintoalaoph1995":
        row["opintoala1995koodi"] = ii["koodiArvo"]
        row["opintoala1995nimi"] = getnimi(ii,"FI")
        row["opintoala1995nimi_sv"] = getnimi(ii,"SV")
        row["opintoala1995nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "tutkinto":
        row["tutkintokoodi"] = ii["koodiArvo"]
        row["tutkintonimi"] = getnimi(ii,"FI")
        row["tutkintonimi_sv"] = getnimi(ii,"SV")
        row["tutkintonimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "tutkintotyyppi":
        row["tutkintotyyppikoodi"] = ii["koodiArvo"]
        row["tutkintotyyppinimi"] = getnimi(ii,"FI")
        row["tutkintotyyppinimi_sv"] = getnimi(ii,"SV")
        row["tutkintotyyppinimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "koulutustyyppi":
        row["koulutustyyppikoodi"] = ii["koodiArvo"]
        row["koulutustyyppinimi"] = getnimi(ii,"FI")
        row["koulutustyyppinimi_sv"] = getnimi(ii,"SV")
        row["koulutustyyppinimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusaste":
        row["isced2011koulutusastekoodi"] = ii["koodiArvo"]
        row["isced2011koulutusastenimi"] = getnimi(ii,"FI")
        row["isced2011koulutusastenimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusastenimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso1":
        row["isced2011koulutusastetaso1koodi"] = ii["koodiArvo"]
        row["isced2011koulutusastetaso1nimi"] = getnimi(ii,"FI")
        row["isced2011koulutusastetaso1nimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusastetaso1nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso2":
        row["isced2011koulutusastetaso2koodi"] = ii["koodiArvo"]
        row["isced2011koulutusastetaso2nimi"] = getnimi(ii,"FI")
        row["isced2011koulutusastetaso2nimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusastetaso2nimi_en"] = getnimi(ii,"EN")	
      if ii["koodisto"]["koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusastetaso1":
        row["koulutusluokitus2016koulutusastetaso1koodi"] = ii["koodiArvo"]
        row["koulutusluokitus2016koulutusastetaso1nimi"] = getnimi(ii,"FI")
        row["koulutusluokitus2016koulutusastetaso1nimi_sv"] = getnimi(ii,"SV")
        row["koulutusluokitus2016koulutusastetaso1nimi_en"] = getnimi(ii,"EN")
      # huom! https://www.stat.fi/meta/luokitukset/koulutus/001-2016/kuvaus.html
      # kansallinenkoulutusluokitus2016koulutusastetaso2 -> isced2011koulutusastetaso2
      if ii["koodisto"]["koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusastetaso2":
        row["koulutusluokitus2016koulutusastetaso2koodi"] = ii["koodiArvo"]
        row["koulutusluokitus2016koulutusastetaso2nimi"] = getnimi(ii,"FI")
        row["koulutusluokitus2016koulutusastetaso2nimi_sv"] = getnimi(ii,"SV")
        row["koulutusluokitus2016koulutusastetaso2nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso1":
        row["isced2011koulutusalataso1koodi"] = ii["koodiArvo"]
        row["isced2011koulutusalataso1nimi"] = getnimi(ii,"FI")
        row["isced2011koulutusalataso1nimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusalataso1nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso1":
        row["koulutusluokitus2016koulutusalataso1koodi"] = ii["koodiArvo"]
        row["koulutusluokitus2016koulutusalataso1nimi"] = getnimi(ii,"FI")
        row["koulutusluokitus2016koulutusalataso1nimi_sv"] = getnimi(ii,"SV")
        row["koulutusluokitus2016koulutusalataso1nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso2":
        row["isced2011koulutusalataso2koodi"] = ii["koodiArvo"]
        row["isced2011koulutusalataso2nimi"] = getnimi(ii,"FI")
        row["isced2011koulutusalataso2nimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusalataso2nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso2":
        row["koulutusluokitus2016koulutusalataso2koodi"] = ii["koodiArvo"]
        row["koulutusluokitus2016koulutusalataso2nimi"] = getnimi(ii,"FI")
        row["koulutusluokitus2016koulutusalataso2nimi_sv"] = getnimi(ii,"SV")
        row["koulutusluokitus2016koulutusalataso2nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso3":
        row["isced2011koulutusalataso3koodi"] = ii["koodiArvo"]
        row["isced2011koulutusalataso3nimi"] = getnimi(ii,"FI")
        row["isced2011koulutusalataso3nimi_sv"] = getnimi(ii,"SV")
        row["isced2011koulutusalataso3nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso3":
        row["koulutusluokitus2016koulutusalataso3koodi"] = ii["koodiArvo"]
        row["koulutusluokitus2016koulutusalataso3nimi"] = getnimi(ii,"FI")
        row["koulutusluokitus2016koulutusalataso3nimi_sv"] = getnimi(ii,"SV")
        row["koulutusluokitus2016koulutusalataso3nimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "okmohjauksenala":
        row["okmohjauksenalakoodi"] = ii["koodiArvo"]
        row["okmohjauksenalanimi"] = getnimi(ii,"FI")
        row["okmohjauksenalanimi_sv"] = getnimi(ii,"SV")
        row["okmohjauksenalanimi_en"] = getnimi(ii,"EN")

    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" %d -- %s"%(cnt,row["koodi"])
    dboperator.insert(hostname+url,schema,table,row,debug)

  dboperator.close(debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" ready"
Beispiel #25
0
def load(secure,hostname,url,schema,table,verbose):
  show("begin "+hostname+" "+url+" "+schema+" "+table)
  if secure:
    address = "https://"+hostname+url
  else:
    address = "http://"+hostname+url
  
  #""" load from web
  show("load from "+address)
  try:
    response = requests.get(address)
  except e:
    show('HTTP GET failed.')
    show('Reason: %s'%(e.reason))
    sys.exit(2)
  else:
    # everything is fine
    show("api call OK")
  
  # read the data.
  # all of it. this is dangerous for big datasets!
  # convert to utf-8 on-the-fly if it's not
  data = response.text.encode('utf-8')
  #"""

  # create temporary file (remove at the end)
  f = tempfile.NamedTemporaryFile() #defaults: mode='w+b', delete=True)
  show("using tempfile: %s"%(f.name))
  f.write(data)
  
  # start using data, go to start
  f.seek(0)
  # remove BOM if exists
  if f.read(3)!=codecs.BOM_UTF8: f.seek(0)
  
  # make csv dictionary (first row must have column names)
  csvdata = csv.DictReader(f, delimiter=";")
  
  # discover columns and their types (read through entirely!)
  show("discover table structure")
  cnt=0
  for row in csvdata:
    cnt+=1
    if verbose: print cnt,row
    if verbose:
      for col in row:
        print cnt,col,row[col]
    dboperator.columns(row)
  
  # start operating with database
  # drop table
  show("drop %s.%s"%(schema,table))
  dboperator.drop(schema,table)

  # create table
  show("create %s.%s"%(schema,table))
  dboperator.create(schema,table)

  show("insert data")
  # reset csvdata!
  f.seek(0)
  # remove BOM
  if f.read(3)!=codecs.BOM_UTF8: f.seek(0)
  csvdata = csv.DictReader(f, delimiter=";")
  
  cnt=0
  for row in csvdata:
    cnt+=1
    # show some sign of being alive
    if cnt%100 == 0:
      sys.stdout.write('.')
      sys.stdout.flush()
    if cnt%1000 == 0:
      show("-- %d" % (cnt))
    dboperator.insert(address,schema,table,row)

  show("wrote %d"%(cnt))
  dboperator.close()
  
  # close (and delete) file
  f.close()

  show("ready")
def load(secure,hostname,url,schema,table,verbose=False):
  if verbose: show("begin")

  # make "columnlist" (type has no meaning as we're not creating table)
  row = makerow()
  # setup dboperator so other calls work
  dboperator.columns(row)

  if verbose: show("empty %s.%s"%(schema,table))
  dboperator.empty(schema,table)

  # fetching could be as simple and fast as:
  """
  geturi = "v2/hae?aktiiviset=true&suunnitellut=true&lakkautetut=true&organisaatiotyyppi="
  tyyppis = [
    "Koulutustoimija",
    "Oppilaitos",
    "Toimipiste"
  ]
  cnt = 0
  for tyyppi in tyyppis:
    show("load from "+hostname+url+geturi+tyyppi)

    if secure:
      address = "https://"+hostname+url+geturi+tyyppi
    else:
      address = "http://"+hostname+url+geturi+tyyppi
  """
  # ... but results don't contain address information :(

  if secure:
    address = "https://"+hostname+url
  else:
    address = "http://"+hostname+url

  #""" load from web
  show("load from "+address)

  try:
    # first create a "hash map" of liitokset
    liitosresponse = requests.get(address+"v2/liitokset")
    # actual data
    response = requests.get(address)
  except e:
    show('HTTP GET failed.')
    show('Reason: %s'%(e.reason))
    sys.exit(2)
  else:
    # everything is fine
    show("api call OK")
  #"""
  
  # liitokset
  liitosmap = dict()
  for l in liitosresponse.json():
    liitosmap[l["organisaatio"]["oid"]] = l["kohde"]["oid"]
  liitosresponse = None
  
  oids = response.json()
  cnt = 0
  for o in oids:
    cnt+=1
    # show some sign of being alive
    if cnt%100 == 0:
      sys.stdout.write('.')
      sys.stdout.flush()
    if cnt%1000 == 0:
      show("-- %d" % (cnt))
    if verbose: show("%d -- %s"%(cnt,row))

    # make another requets to actual organization data
    r = requests.get(address+o)
    i = r.json()
    
    # make "row" (clear values)
    row = makerow()
    
    row["oid"] = o
    row["parentoid"] = jv(i,"parentOid")
    # liitokset
    row["liitosoid"] = liitosmap[o] if o in liitosmap else None
    
    # TODO does the order here matter? if multiple tyyppi's, what to do?
    if "tyypit" in i and "Koulutustoimija" in i["tyypit"]:
      row["tyyppi"] = "Koulutustoimija"
      row["koodi"] = jv(i,"ytunnus")
      if not row["koodi"]:
        row["koodi"] = jv(i,"virastotunnus") # alternatively try virastotunnus if ytunnus is missing
      if not row["koodi"]:
        row["tyyppi"] = None # cancel this organization from loading
    elif "tyypit" in i and "Oppilaitos" in i["tyypit"]:
      row["tyyppi"] = "Oppilaitos"
      row["koodi"] = jv(i,"oppilaitosKoodi")
      if "oppilaitosTyyppiUri" in i and i["oppilaitosTyyppiUri"]:
        row["oppilaitostyyppi"] = i["oppilaitosTyyppiUri"].replace("oppilaitostyyppi_","").replace("#1","")
        # => just code, text values separately
    elif "tyypit" in i and "Toimipiste" in i["tyypit"]:
      row["tyyppi"] = "Toimipiste"
      row["koodi"] = jv(i,"toimipistekoodi")
    elif "tyypit" in i and "Oppisopimustoimipiste" in i["tyypit"]:
      row["tyyppi"] = "Oppisopimustoimipiste"
      row["koodi"] = jv(i,"toimipistekoodi")
    
    # was current organization of type of interest
    if row["tyyppi"]:
    
      if "nimi" in i and i["nimi"]:
        row["nimi"] = jv(jv(i,"nimi"),"fi")
        row["nimi_sv"] = jv(jv(i,"nimi"),"sv")
        row["nimi_en"] = jv(jv(i,"nimi"),"en")
      row["alkupvm"] = jv(i,"alkuPvm")
      row["loppupvm"] = jv(i,"lakkautusPvm")
      
      if "kotipaikkaUri" in i and i["kotipaikkaUri"]:
        row["kotikunta"] = jv(i,"kotipaikkaUri").replace("kunta_","")
        # => just code, text values separately

      if "kieletUris" in i and i["kieletUris"]:
        # todo what if many?
        row["oppilaitoksenopetuskieli"] = i["kieletUris"][0].replace("oppilaitoksenopetuskieli_","").replace("#1","")
        # => just code, text values separately

      # address, first kayntiosoite and if not exists then postiosoite
      josoite = None
      if "kayntiosoite" in i:
        josoite = jv(i,"kayntiosoite")
        row["osoitetyyppi"] = "kayntiosoite"
      elif "postiosoite" in i:
        josoite = jv(i,"postiosoite")
        row["osoitetyyppi"] = "postiosoite"
      if josoite:
        row["osoite"] = jv(josoite,"osoite")
        row["postinumero"] = josoite["postinumeroUri"].replace("posti_","") if "postinumeroUri" in josoite and josoite["postinumeroUri"] else None
        row["postitoimipaikka"] = jv(josoite,"postitoimipaikka")

        if (row["osoite"] is not None and row["osoite"] is not "" and row["postinumero"] is not None and row["postinumero"] is not ""
            and int(row["postinumero"]) is not 0 and row["postitoimipaikka"] is not None and row["postitoimipaikka"] is not ""):
          get_and_set_coordinates(row)

      if verbose: show(" %5d -- %s %s (%s)"%(cnt,row["tyyppi"],row["koodi"],row["nimi"]))
      dboperator.insert(hostname+url,schema,table,row)

  dboperator.close()

  if verbose: show("ready")
Beispiel #27
0
def load(secure,
         hostname,
         url,
         schema,
         table,
         codeset,
         verbose=False,
         debug=False):
    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " begin")

    row = makerow()
    dboperator.columns(row, debug)

    if verbose:
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " empty %s.%s" %
            (schema, table))
    dboperator.empty(schema, table, debug)

    url = url % codeset  # korvaa placeholder
    if secure:
        httpconn = httplib.HTTPSConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) +
            " load securely from " + hostname + url)
    else:
        httpconn = httplib.HTTPConnection(hostname)
        print(
            strftime("%Y-%m-%d %H:%M:%S", localtime()) + " load from " +
            hostname + url)

    reqheaders = {'Caller-Id': '1.2.246.562.10.2013112012294919827487.vipunen'}
    httpconn.request('GET', url, headers=reqheaders)
    #httpconn.request('GET', url)
    r = httpconn.getresponse()
    j = json.loads(r.read())
    cnt = 0
    for i in j:
        cnt += 1
        row = makerow()

        row["koodi"] = i["koodiArvo"]
        row["nimi"] = getnimi(i, "FI")
        row["nimi_sv"] = getnimi(i, "SV")
        row["nimi_en"] = getnimi(i, "EN")
        row["alkupvm"] = i["voimassaAlkuPvm"]
        row["loppupvm"] = i["voimassaLoppuPvm"]

        httpconn.request(
            'GET',
            "/koodisto-service/rest/json/relaatio/sisaltyy-alakoodit/%s" %
            i["koodiUri"],
            headers=reqheaders)
        rr = httpconn.getresponse()
        jj = json.loads(rr.read())
        for ii in jj:
            if ii["koodisto"]["koodistoUri"] == "koulutusasteoph2002":
                row["koulutusaste2002koodi"] = ii["koodiArvo"]
                row["koulutusaste2002nimi"] = getnimi(ii, "FI")
                row["koulutusaste2002nimi_sv"] = getnimi(ii, "SV")
                row["koulutusaste2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusalaoph2002":
                row["koulutusala2002koodi"] = ii["koodiArvo"]
                row["koulutusala2002nimi"] = getnimi(ii, "FI")
                row["koulutusala2002nimi_sv"] = getnimi(ii, "SV")
                row["koulutusala2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "opintoalaoph2002":
                row["opintoala2002koodi"] = ii["koodiArvo"]
                row["opintoala2002nimi"] = getnimi(ii, "FI")
                row["opintoala2002nimi_sv"] = getnimi(ii, "SV")
                row["opintoala2002nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusasteoph1995":
                row["koulutusaste1995koodi"] = ii["koodiArvo"]
                row["koulutusaste1995nimi"] = getnimi(ii, "FI")
                row["koulutusaste1995nimi_sv"] = getnimi(ii, "SV")
                row["koulutusaste1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutusalaoph1995":
                row["koulutusala1995koodi"] = ii["koodiArvo"]
                row["koulutusala1995nimi"] = getnimi(ii, "FI")
                row["koulutusala1995nimi_sv"] = getnimi(ii, "SV")
                row["koulutusala1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "opintoalaoph1995":
                row["opintoala1995koodi"] = ii["koodiArvo"]
                row["opintoala1995nimi"] = getnimi(ii, "FI")
                row["opintoala1995nimi_sv"] = getnimi(ii, "SV")
                row["opintoala1995nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "tutkinto":
                row["tutkintokoodi"] = ii["koodiArvo"]
                row["tutkintonimi"] = getnimi(ii, "FI")
                row["tutkintonimi_sv"] = getnimi(ii, "SV")
                row["tutkintonimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "tutkintotyyppi":
                row["tutkintotyyppikoodi"] = ii["koodiArvo"]
                row["tutkintotyyppinimi"] = getnimi(ii, "FI")
                row["tutkintotyyppinimi_sv"] = getnimi(ii, "SV")
                row["tutkintotyyppinimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "koulutustyyppi":
                row["koulutustyyppikoodi"] = ii["koodiArvo"]
                row["koulutustyyppinimi"] = getnimi(ii, "FI")
                row["koulutustyyppinimi_sv"] = getnimi(ii, "SV")
                row["koulutustyyppinimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusaste":
                row["isced2011koulutusastekoodi"] = ii["koodiArvo"]
                row["isced2011koulutusastenimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastenimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastenimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso1":
                row["isced2011koulutusastetaso1koodi"] = ii["koodiArvo"]
                row["isced2011koulutusastetaso1nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastetaso1nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastetaso1nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusastetaso2":
                row["isced2011koulutusastetaso2koodi"] = ii["koodiArvo"]
                row["isced2011koulutusastetaso2nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusastetaso2nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusastetaso2nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"][
                    "koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusastetaso1":
                row["koulutusluokitus2016koulutusastetaso1koodi"] = ii[
                    "koodiArvo"]
                row["koulutusluokitus2016koulutusastetaso1nimi"] = getnimi(
                    ii, "FI")
                row["koulutusluokitus2016koulutusastetaso1nimi_sv"] = getnimi(
                    ii, "SV")
                row["koulutusluokitus2016koulutusastetaso1nimi_en"] = getnimi(
                    ii, "EN")
            # huom! https://www.stat.fi/meta/luokitukset/koulutus/001-2016/kuvaus.html
            # kansallinenkoulutusluokitus2016koulutusastetaso2 -> isced2011koulutusastetaso2
            if ii["koodisto"][
                    "koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusastetaso2":
                row["koulutusluokitus2016koulutusastetaso2koodi"] = ii[
                    "koodiArvo"]
                row["koulutusluokitus2016koulutusastetaso2nimi"] = getnimi(
                    ii, "FI")
                row["koulutusluokitus2016koulutusastetaso2nimi_sv"] = getnimi(
                    ii, "SV")
                row["koulutusluokitus2016koulutusastetaso2nimi_en"] = getnimi(
                    ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso1":
                row["isced2011koulutusalataso1koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso1nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso1nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso1nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"][
                    "koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso1":
                row["koulutusluokitus2016koulutusalataso1koodi"] = ii[
                    "koodiArvo"]
                row["koulutusluokitus2016koulutusalataso1nimi"] = getnimi(
                    ii, "FI")
                row["koulutusluokitus2016koulutusalataso1nimi_sv"] = getnimi(
                    ii, "SV")
                row["koulutusluokitus2016koulutusalataso1nimi_en"] = getnimi(
                    ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso2":
                row["isced2011koulutusalataso2koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso2nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso2nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso2nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"][
                    "koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso2":
                row["koulutusluokitus2016koulutusalataso2koodi"] = ii[
                    "koodiArvo"]
                row["koulutusluokitus2016koulutusalataso2nimi"] = getnimi(
                    ii, "FI")
                row["koulutusluokitus2016koulutusalataso2nimi_sv"] = getnimi(
                    ii, "SV")
                row["koulutusluokitus2016koulutusalataso2nimi_en"] = getnimi(
                    ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "isced2011koulutusalataso3":
                row["isced2011koulutusalataso3koodi"] = ii["koodiArvo"]
                row["isced2011koulutusalataso3nimi"] = getnimi(ii, "FI")
                row["isced2011koulutusalataso3nimi_sv"] = getnimi(ii, "SV")
                row["isced2011koulutusalataso3nimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"][
                    "koodistoUri"] == "kansallinenkoulutusluokitus2016koulutusalataso3":
                row["koulutusluokitus2016koulutusalataso3koodi"] = ii[
                    "koodiArvo"]
                row["koulutusluokitus2016koulutusalataso3nimi"] = getnimi(
                    ii, "FI")
                row["koulutusluokitus2016koulutusalataso3nimi_sv"] = getnimi(
                    ii, "SV")
                row["koulutusluokitus2016koulutusalataso3nimi_en"] = getnimi(
                    ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "okmohjauksenala":
                row["okmohjauksenalakoodi"] = ii["koodiArvo"]
                row["okmohjauksenalanimi"] = getnimi(ii, "FI")
                row["okmohjauksenalanimi_sv"] = getnimi(ii, "SV")
                row["okmohjauksenalanimi_en"] = getnimi(ii, "EN")
            if ii["koodisto"]["koodistoUri"] == "tutkintonimikkeet":
                row["tutkintonimikekoodi"] = ii["koodiArvo"]
                row["tutkintonimike"] = getnimi(ii, "FI")
                row["tutkintonimike_sv"] = getnimi(ii, "SV")
                row["tutkintonimike_en"] = getnimi(ii, "EN")

        if verbose:
            print(
                strftime("%Y-%m-%d %H:%M:%S", localtime()) + " %d -- %s" %
                (cnt, row["koodi"]))
        dboperator.insert(hostname + url, schema, table, row, debug)

    dboperator.close(debug)

    if verbose: print(strftime("%Y-%m-%d %H:%M:%S", localtime()) + " ready")
Beispiel #28
0
def load(secure, hostname, url, schema, table, verbose=False):
    if verbose: show("begin")

    # make "columnlist" (type has no meaning as we're not creating table)
    row = makerow()
    # setup dboperator so other calls work
    dboperator.columns(row)

    if verbose: show("empty %s.%s" % (schema, table))
    dboperator.empty(schema, table)

    # fetching could be as simple and fast as:
    """
  geturi = "v2/hae?aktiiviset=true&suunnitellut=true&lakkautetut=true&organisaatiotyyppi="
  tyyppis = [
    "Koulutustoimija",
    "Oppilaitos",
    "Toimipiste"
  ]
  cnt = 0
  for tyyppi in tyyppis:
    show("load from "+hostname+url+geturi+tyyppi)

    if secure:
      address = "https://"+hostname+url+geturi+tyyppi
    else:
      address = "http://"+hostname+url+geturi+tyyppi
  """
    # ... but results don't contain address information :(

    if secure:
        address = "https://" + hostname + url
    else:
        address = "http://" + hostname + url

    #""" load from web
    show("load from " + address)

    try:
        # first create a "hash map" of liitokset
        liitosresponse = requests.get(
            address + "v2/liitokset",
            headers={
                'Caller-Id': '1.2.246.562.10.2013112012294919827487.vipunen'
            })
        # actual data
        response = requests.get(
            address,
            headers={
                'Caller-Id': '1.2.246.562.10.2013112012294919827487.vipunen'
            })
    except Exception as e:
        show('HTTP GET failed.')
        show('Reason: %s' % (str(e)))
        sys.exit(2)
    else:
        # everything is fine
        show("api call OK")
    #"""

    # liitokset
    liitosmap = dict()
    for l in liitosresponse.json():
        liitosmap[l["organisaatio"]["oid"]] = l["kohde"]["oid"]
    liitosresponse = None

    oids = response.json()
    cnt = 0
    for o in oids:
        cnt += 1
        # show some sign of being alive
        if cnt % 100 == 0:
            sys.stdout.write('.')
            sys.stdout.flush()
        if cnt % 1000 == 0:
            show("-- %d" % (cnt))
        if verbose: show("%d -- %s" % (cnt, row))

        # make another requets to actual organization data
        try:
            r = requests.get(
                address + o,
                headers={
                    'Caller-Id':
                    '1.2.246.562.10.2013112012294919827487.vipunen'
                })
            i = r.json()

            # make "row" (clear values)
            row = makerow()

            row["oid"] = o
            row["parentoid"] = jv(i, "parentOid")
            # liitokset
            row["liitosoid"] = liitosmap[o] if o in liitosmap else None

            # TODO does the order here matter? if multiple tyyppi's, what to do?
            if "tyypit" in i and "Koulutustoimija" in i["tyypit"]:
                row["tyyppi"] = "Koulutustoimija"
                row["koodi"] = jv(i, "ytunnus")
                if not row["koodi"]:
                    row["koodi"] = jv(
                        i, "virastoTunnus"
                    )  # alternatively try virastotunnus if ytunnus is missing
                if not row["koodi"]:
                    row["tyyppi"] = None  # cancel this organization from loading
            elif "tyypit" in i and "Oppilaitos" in i["tyypit"]:
                row["tyyppi"] = "Oppilaitos"
                row["koodi"] = jv(i, "oppilaitosKoodi")
                if "oppilaitosTyyppiUri" in i and i["oppilaitosTyyppiUri"]:
                    row["oppilaitostyyppi"] = i["oppilaitosTyyppiUri"].replace(
                        "oppilaitostyyppi_", "").replace("#1", "")
                    # => just code, text values separately
            elif "tyypit" in i and "Toimipiste" in i["tyypit"]:
                row["tyyppi"] = "Toimipiste"
                row["koodi"] = jv(i, "toimipistekoodi")
            elif "tyypit" in i and "Oppisopimustoimipiste" in i["tyypit"]:
                row["tyyppi"] = "Oppisopimustoimipiste"
                row["koodi"] = jv(i, "toimipistekoodi")
            elif "tyypit" in i and "Varhaiskasvatuksen toimipaikka" in i[
                    "tyypit"]:
                row["tyyppi"] = "Varhaiskasvatuksen toimipaikka"
                row["koodi"] = jv(i, "toimipistekoodi")
            elif "tyypit" in i and "Varhaiskasvatuksen jarjestaja" in i[
                    "tyypit"]:
                row["tyyppi"] = "Varhaiskasvatuksen järjestaja"
                row["koodi"] = jv(i, "toimipistekoodi")
            # was current organization of type of interest
            if row["tyyppi"]:

                if "nimi" in i and i["nimi"]:
                    row["nimi"] = jv(jv(i, "nimi"), "fi")
                    row["nimi_sv"] = jv(jv(i, "nimi"), "sv")
                    row["nimi_en"] = jv(jv(i, "nimi"), "en")
                row["alkupvm"] = jv(i, "alkuPvm")
                row["loppupvm"] = jv(i, "lakkautusPvm")

                if "kotipaikkaUri" in i and i["kotipaikkaUri"]:
                    row["kotikunta"] = jv(i, "kotipaikkaUri").replace(
                        "kunta_", "")
                    # => just code, text values separately

                if "kieletUris" in i and i["kieletUris"]:
                    # todo what if many?
                    row["oppilaitoksenopetuskieli"] = i["kieletUris"][
                        0].replace("oppilaitoksenopetuskieli_",
                                   "").replace("#1", "")
                    # => just code, text values separately

                # address, first kayntiosoite and if not exists then postiosoite
                josoite = None
                if "kayntiosoite" in i:
                    josoite = jv(i, "kayntiosoite")
                    row["osoitetyyppi"] = "kayntiosoite"
                elif "postiosoite" in i:
                    josoite = jv(i, "postiosoite")
                    row["osoitetyyppi"] = "postiosoite"
                if josoite:
                    row["osoite"] = jv(josoite, "osoite")
                    row["postinumero"] = josoite["postinumeroUri"].replace(
                        "posti_",
                        "") if "postinumeroUri" in josoite and josoite[
                            "postinumeroUri"] else None
                    row["postitoimipaikka"] = jv(josoite, "postitoimipaikka")

                    if (row["osoite"] is not None and row["osoite"] is not ""
                            and row["postinumero"] is not None
                            and row["postinumero"] is not ""
                            and int(row["postinumero"]) is not 0
                            and row["postitoimipaikka"] is not None
                            and row["postitoimipaikka"] is not ""):
                        get_and_set_coordinates(row)

                if verbose:
                    show(" %5d -- %s %s (%s)" %
                         (cnt, row["tyyppi"], row["koodi"], row["nimi"]))
                dboperator.insert(hostname + url, schema, table, row)
        except ValueError as ve:
            print("ValueError: " + str(ve))
            print("vika: " + str(address) + " oid:" + str(o))

    dboperator.close()

    if verbose: show("ready")
          if josoite:
            row["osoite"] = jv(josoite,"osoite")
            row["postinumero"] = josoite["postinumeroUri"].replace("posti_","") if "postinumeroUri" in josoite and josoite["postinumeroUri"] else None
            row["postitoimipaikka"] = jv(josoite,"postitoimipaikka")

            if (row["osoite"] is not None and row["osoite"] is not "" and row["postinumero"] is not None and row["postinumero"] is not ""
                and int(row["postinumero"]) is not 0 and row["postitoimipaikka"] is not None and row["postitoimipaikka"] is not ""):
              get_and_set_coordinates(row)

          if verbose: show(" %5d -- %s %s (%s)"%(cnt,row["tyyppi"],row["koodi"],row["nimi"]))
          dboperator.insert(hostname+url,schema,table,row)
    except ValueError, ve:
        print "Error: " + str(ve)
        print "vika: " + str(address) + " oid:" + str(o)

  dboperator.close()

  if verbose: show("ready")

def usage():
  print """
usage: organisaatioluokitus.py [-s|--secure] [-H|--hostname <hostname>] [-u|--url <url>] [-e|--schema <schema>] [-t|--table <table>] [-v|--verbose]

secure defaults to secure, so no actual use here!
hostname defaults to $OPINTOPOLKU then to "virkailija.opintopolku.fi"
url defaults to "/organisaatio-service/rest/organisaatio/"
schema defaults to $SCHEMA then to "sa"
table defaults to $TABLE then to "sa_organisaatioluokitus"
"""

def main(argv):
def load(secure,hostname,url,schema,table,codeset,verbose=False,debug=False):
  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" begin"

  row = makerow()
  dboperator.columns(row,debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" empty %s.%s"%(schema,table)
  dboperator.empty(schema,table,debug)

  url = url % codeset # replace placeholder
  if secure:
    httpconn = httplib.HTTPSConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load securely from "+hostname+url
  else:
    httpconn = httplib.HTTPConnection(hostname)
    print strftime("%Y-%m-%d %H:%M:%S", localtime())+" load from "+hostname+url

  httpconn.request('GET', url)
  r = httpconn.getresponse()
  j = json.loads(r.read())
  cnt = 0
  for i in j:
    cnt += 1
    row = makerow()

    row["koodi"] = jv(i,"koodiArvo")
    row["nimi"] = getnimi(i,"FI")
    row["nimi_sv"] = getnimi(i,"SV")
    row["nimi_en"] = getnimi(i,"FI")
    row["alkupvm"] = jv(i,"voimassaAlkuPvm")
    row["loppupvm"] = jv(i,"voimassaLoppuPvm")

    # classifications (nb! avi is in different direction!)
    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-ylakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      if ii["koodisto"]["koodistoUri"] == "aluehallintovirasto":
        row["avikoodi"] = jv(ii,"koodiArvo")
        row["avinimi"] = getnimi(ii,"FI")
        row["avinimi_sv"] = getnimi(ii,"SV")
        row["avinimi_en"] = getnimi(ii,"EN")
    # other classifications
    httpconn.request('GET', "/koodisto-service/rest/json/relaatio/sisaltyy-alakoodit/%s" % i["koodiUri"])
    rr = httpconn.getresponse()
    jj = json.loads(rr.read())
    ss = ""
    for ii in jj:
      if ii["koodisto"]["koodistoUri"] == "maakunta":
        row["maakuntakoodi"] = jv(ii,"koodiArvo")
        row["maakuntanimi"] = getnimi(ii,"FI")
        row["maakuntanimi_sv"] = getnimi(ii,"SV")
        row["maakuntanimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "elykeskus":
        row["elykoodi"] = jv(ii,"koodiArvo")
        row["elynimi"] = getnimi(ii,"FI")
        row["elynimi_sv"] = getnimi(ii,"SV")
        row["elynimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "kielisuhde":
        row["kielisuhdekoodi"] = jv(ii,"koodiArvo")
        row["kielisuhdenimi"] = getnimi(ii,"FI")
        row["kielisuhdenimi_sv"] = getnimi(ii,"SV")
        row["kielisuhdenimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "seutukunta":
        row["seutukuntakoodi"] = jv(ii,"koodiArvo")
        row["seutukuntanimi"] = getnimi(ii,"FI")
        row["seutukuntanimi_sv"] = getnimi(ii,"SV")
        row["seutukuntanimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "laani":
        row["laanikoodi"] = jv(ii,"koodiArvo")
        row["laaninimi"] = getnimi(ii,"FI")
        row["laaninimi_sv"] = getnimi(ii,"SV")
        row["laaninimi_en"] = getnimi(ii,"EN")
      if ii["koodisto"]["koodistoUri"] == "kuntaryhma":
        row["kuntaryhmakoodi"] = jv(ii,"koodiArvo")
        row["kuntaryhmanimi"] = getnimi(ii,"FI")
        row["kuntaryhmanimi_sv"] = getnimi(ii,"SV")
        row["kuntaryhmanimi_en"] = getnimi(ii,"EN")

    if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" %d -- %s"%(cnt,row["koodi"])
    dboperator.insert(hostname+url,schema,table,row,debug)

  dboperator.close(debug)

  if verbose: print strftime("%Y-%m-%d %H:%M:%S", localtime())+" ready"