示例#1
0
def create_new_table():
    tables = get_schema_info(schemainfo)
    jghstat07 = [t for t in tables if t.tablename == "jghstat07"][0]
    db = getDBHandle()
    # print jghstat07.sql_create()
    db.query(jghstat07.sql_create())
    # table_id = 32
    # field_id = 333
    table_id = Tabelle().getNewId()
    # print jghstat07.sql_insert(table_id)
    db.query(jghstat07.sql_insert(table_id))
    for f in jghstat07.fields:
        field_id = Feld().getNewId()
        # print f.sql_insert(field_id)
        db.query(f.sql_insert(field_id))
    j07 = Tabelle(tabelle="jghstat07")
    logging.info("Neue Tabelle für %s: %s" % (j07["name"], "jghstat07"))

    if config.BERLINER_VERSION:
        merkmale = "merkmale_berlin.py"
    else:
        merkmale = "merkmale_standard.py"
    create_new_kategorien(jghstat07, join(config.EBKUS_HOME, "sql", merkmale))
    for f in jghstat07.fields:
        fupd = Feld()
        v = Code(code=f.verwtyp, kat_code="verwtyp")
        fupd["verwtyp"] = v["id"]
        if f.verwtyp in "kb":
            kat = Kategorie(code=f.kat_code)
            fupd["kat_id"] = kat["id"]
            fupd["kat_code"] = kat["code"]
        if f.verwtyp in "fk":  # kodierte Felder sind Fremdschlüssel nach code
            fupd["ftab_id"] = Tabelle(tabelle=f.ftable)["id"]
            if f.verwtyp in "f":  # Name für inverse Beziehung
                fupd["inverse"] = f.inverse
        feld = Feld(feld=f.fieldname, tab_id=j07["id"])
        feld.update(fupd)

    site = Code(kat_code="dbsite", code=config.SITE)
    t = TabellenID()
    t["table_id"] = j07["id"]
    t["table_name"] = j07["tabelle"]
    t["dbsite"] = site["id"]
    t["minid"] = site["mini"]
    t["maxid"] = site["maxi"]
    t["maxist"] = 1
    t.insert()
    return True