got skills working with yaml
							parent
							
								
									39f1a25704
								
							
						
					
					
						commit
						38579d8c1d
					
				|  | @ -6,38 +6,171 @@ import sys | ||||||
| 
 | 
 | ||||||
| DBFILE = 'tmp.db' | DBFILE = 'tmp.db' | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| def main(): | def main(): | ||||||
|    # delete DBfile and run fresh |     # delete DBfile and run fresh | ||||||
|    os.remove(DBFILE) |     os.remove(DBFILE) | ||||||
|    # Load in the yaml data |     # Load in the yaml data | ||||||
|    with open('basics.yaml') as yl: |     with open('basics.yaml') as yl: | ||||||
|       data = yaml.full_load(yl) |         data = yaml.full_load(yl) | ||||||
|    # Get a DB conn |     # Get a DB conn | ||||||
|    conn = get_db_conn() |     conn = get_db_conn() | ||||||
|    # call the functions to input to SQL |     # call the functions to input to SQL | ||||||
|    do_abilityscore(data['abilityscore'], conn) |     do_abilityscore(data['abilityscore'], conn) | ||||||
|    do_actioncost(data['actioncost'], conn) |     do_actioncost(data['actioncost'], conn) | ||||||
|    do_alignment(data['alignment'], conn) |     do_alignment(data['alignment'], conn) | ||||||
|    do_frequency(data['frequency'], conn) |     do_frequency(data['frequency'], conn) | ||||||
|    do_langrarity(data['lang_rarity'], conn) |     do_langrarity(data['lang_rarity'], conn) | ||||||
|    do_movement(data['movement'], conn) |     do_movement(data['movement'], conn) | ||||||
|    do_size(data['size'], conn) |     do_size(data['size'], conn) | ||||||
|    do_weaponcategory(data['weaponcategory'], conn) |     do_weaponcategory(data['weaponcategory'], conn) | ||||||
| 
 | 
 | ||||||
|    # move on to traits |     # move on to traits | ||||||
|    with open('traits.yaml') as yl: |     with open('traits.yaml') as yl: | ||||||
|       data = yaml.full_load(yl) |         data = yaml.full_load(yl) | ||||||
|    do_traits(data, conn) # does both trait types and traits |     do_traits(data, conn)  # does both trait types and traits | ||||||
| 
 | 
 | ||||||
|    # move on to sources |     # move on to sources | ||||||
|    with open('sources.yaml') as yl: |     with open('sources.yaml') as yl: | ||||||
|       data = yaml.full_load(yl) |         data = yaml.full_load(yl) | ||||||
|    do_sources(data, conn) |     do_sources(data, conn) | ||||||
|  |     do_source_entry_table(conn) | ||||||
|  | 
 | ||||||
|  |     # move on to skills | ||||||
|  |     with open('skills.yaml') as yl: | ||||||
|  |         data = yaml.full_load(yl) | ||||||
|  |     do_skills(data, conn) | ||||||
|  | 
 | ||||||
|  | def do_skills(data, conn): | ||||||
|  |     # make skill table | ||||||
|  |     table = """ | ||||||
|  | CREATE TABLE skill ( | ||||||
|  |   skill_id INTEGER PRIMARY KEY, | ||||||
|  |   "name" TEXT UNIQUE NOT NULL, | ||||||
|  |   descr TEXT | ||||||
|  | ); | ||||||
|  |    """ | ||||||
|  |     c = conn.cursor() | ||||||
|  |     c.execute(table) | ||||||
|  | 
 | ||||||
|  |     # make sourceentry many-to-many table | ||||||
|  |     table = """ | ||||||
|  | CREATE TABLE sourceentry_skill ( | ||||||
|  |   id INTEGER PRIMARY KEY, | ||||||
|  |   sourceentry_id INTEGER NOT NULL, | ||||||
|  |   skill_id INTEGER NOT NULL, | ||||||
|  |   UNIQUE (sourceentry_id, skill_id), -- prevent duplicates | ||||||
|  |   FOREIGN KEY (sourceentry_id) REFERENCES sourceentry(sourceentry_id), | ||||||
|  |   FOREIGN KEY (skill_id) REFERENCES skill(skill_id) | ||||||
|  | ); | ||||||
|  |    """ | ||||||
|  |     c = conn.cursor() | ||||||
|  |     c.execute(table) | ||||||
|  | 
 | ||||||
|  |     # insert basics into skill table | ||||||
|  |     inp_data = [] | ||||||
|  |     for i in data['skill']: | ||||||
|  |         inp_data.append( | ||||||
|  |             (i['name'], i['descr'])) | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO skill (name, descr) VALUES (?,?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except sqlite3.Error as e: | ||||||
|  |         print("Error creating skill: {}".format(e)) | ||||||
|  |     except: | ||||||
|  |         print("Error creating skill something other than sqlite3 error") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
|  | 
 | ||||||
|  |     # go through and do source entry linking | ||||||
|  | 
 | ||||||
|  |     for i in data['skill']: | ||||||
|  |         print("\n\nDoing the skill: {}".format(i['name'])) | ||||||
|  |         srcs = [] | ||||||
|  |         # TODO refactor this inner loop for sources out | ||||||
|  |         for j in i['source']: | ||||||
|  |             abbr = j['abbr'] | ||||||
|  |             page_start = j['page_start'] | ||||||
|  |             if 'page_stop' in j: | ||||||
|  |                 page_stop = j['page_stop'] | ||||||
|  |             else: | ||||||
|  |                 page_stop = page_start | ||||||
|  |             srcs.append([i['name'], abbr, page_start, page_stop]) | ||||||
|  |         print("srcs: {}".format(srcs)) | ||||||
|  |         do_sourceentry_to_skill(srcs, conn) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | # TODO ugggh;;; this is soooo ugly and needs refactoring but it's working | ||||||
|  | def do_sourceentry_to_skill(srcs, conn): | ||||||
|  |     c = conn.cursor() | ||||||
|  | 
 | ||||||
|  |     stmt = "SELECT source.source_id, skill.skill_id FROM source, skill WHERE source.abbr=? AND skill.name=?" | ||||||
|  |     istmt = "INSERT INTO sourceentry (source_id, page_start, page_stop) VALUES (?,?,?)" | ||||||
|  |     for i in srcs: | ||||||
|  |         print("i in srcs: {}".format(i)) | ||||||
|  |         inp_data=(i[1],i[0]) | ||||||
|  |         print("inp data: {}".format(inp_data))  | ||||||
|  |         for row in c.execute(stmt, inp_data): | ||||||
|  |             print("source_id:{} skill_id:{}".format(row[0], row[1])) | ||||||
|  |             iinp_data = (row[0], i[2], i[3]) | ||||||
|  |             print("iinp data: {}".format(iinp_data)) | ||||||
|  | 
 | ||||||
|  |             try: | ||||||
|  |                 c.execute(istmt, iinp_data) | ||||||
|  |             except sqlite3.IntegrityError as e: | ||||||
|  |                 if "UNIQUE" in str(e): | ||||||
|  |                     # we fully expect UNIQUE constraint to fail on some of these so it's fine | ||||||
|  |                     conn.commit() | ||||||
|  |                     print("committed istmt") | ||||||
|  |                 else: | ||||||
|  |                     # but we still want to know what's going on if there's some other error | ||||||
|  |                     print("Something went wrong with istmt: {}".format(e)) | ||||||
|  |             except sqlite3.Error as e: | ||||||
|  |                 print("Error inserting a sourceentry for skill: {}".format(e)) | ||||||
|  |             else: | ||||||
|  |                 conn.commit() | ||||||
|  |                 print("committed istmt") | ||||||
|  | 
 | ||||||
|  |             linkstmt = "INSERT INTO sourceentry_skill (sourceentry_id, skill_id) VALUES ((SELECT sourceentry_id from sourceentry WHERE source_id=? AND page_start=? AND page_stop=?), ?)" | ||||||
|  |             linkinp_data = (row[0], i[2], i[3], row[1]) | ||||||
|  |             print(linkinp_data) | ||||||
|  |             try: | ||||||
|  |                 c.execute(linkstmt, linkinp_data) | ||||||
|  |             except sqlite3.IntegrityError as e: | ||||||
|  |                 if "UNIQUE" in str(e): | ||||||
|  |                     # we fully expect UNIQUE constraint to fail on some of these so it's fine | ||||||
|  |                     conn.commit() | ||||||
|  |                     print("committed linkstmt") | ||||||
|  |                     pass | ||||||
|  |                 else: | ||||||
|  |                     # but we still want to know what's going on if there's some other error | ||||||
|  |                     print(e) | ||||||
|  |             except sqlite3.Error as e: | ||||||
|  |                 print("Error inserting a sourceentry for skill: {}".format(e)) | ||||||
|  |             else: | ||||||
|  |                 conn.commit() | ||||||
|  |                 print("committed linkstmt") | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def do_source_entry_table(conn): | ||||||
|  |     table = """ | ||||||
|  | CREATE TABLE sourceentry ( | ||||||
|  |   sourceentry_id INTEGER PRIMARY KEY, | ||||||
|  |   source_id INTEGER NOT NULL, | ||||||
|  |   page_start INTEGER NOT NULL, | ||||||
|  |   page_stop INTEGER NOT NULL, | ||||||
|  |   UNIQUE (source_id, page_start, page_stop), -- prevent duplicates | ||||||
|  |   FOREIGN KEY (source_id) REFERENCES source(source_id) | ||||||
|  | ); | ||||||
|  |    """ | ||||||
|  |     c = conn.cursor() | ||||||
|  |     c.execute(table) | ||||||
| 
 | 
 | ||||||
| def do_sources(data, conn): | def do_sources(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE sources ( | CREATE TABLE source ( | ||||||
|   sources_id INTEGER PRIMARY KEY, |   source_id INTEGER PRIMARY KEY, | ||||||
|   isbn TEXT, |   isbn TEXT, | ||||||
|   pzocode TEXT, |   pzocode TEXT, | ||||||
|   full_name TEXT NOT NULL UNIQUE, |   full_name TEXT NOT NULL UNIQUE, | ||||||
|  | @ -50,40 +183,36 @@ CREATE TABLE sources ( | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data['source']: |     for i in data['source']: | ||||||
|       inp_data.append((i['isbn'], |         inp_data.append( | ||||||
|                        i['pzocode'], |             (i['isbn'], i['pzocode'], i['full_name'], i['short_name'], | ||||||
|                        i['full_name'], |              i['abbr'], i['descr'], i['release_date'], i['is_first_party'], | ||||||
|                        i['short_name'], |              i['ogl_copyright_block'])) | ||||||
|                        i['abbr'], | 
 | ||||||
|                        i['descr'], |     stmt = "INSERT INTO source (isbn, pzocode, full_name, short_name, abbr, descr, release_date, is_first_party, ogl_copyright_block) VALUES (?,?,?,?,?,?,?,?,?)" | ||||||
|                        i['release_date'], |     try: | ||||||
|                        i['is_first_party'], |         conn.executemany(stmt, inp_data) | ||||||
|                        i['ogl_copyright_block'])) |     except sqlite3.Error as e: | ||||||
|  |         print("Error creating source: {}".format(e)) | ||||||
|  |     except: | ||||||
|  |         print("Error creating sources something other than sqlite3 error") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO sources (isbn, pzocode, full_name, short_name, abbr, descr, release_date, is_first_party, ogl_copyright_block) VALUES (?,?,?,?,?,?,?,?,?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except sqlite3.Error as e: |  | ||||||
|       print("Error creating sources: {}".format(e)) |  | ||||||
|    except: |  | ||||||
|       print("Error creating sources something other than sqlite3 error") |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_traits(data, conn): | def do_traits(data, conn): | ||||||
|    # create the two tables |     # create the two tables | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE traittype ( | CREATE TABLE traittype ( | ||||||
|   traittype_id INTEGER PRIMARY KEY, |   traittype_id INTEGER PRIMARY KEY, | ||||||
|   name TEXT NOT NULL |   name TEXT NOT NULL | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
|    table_two = """ |     table_two = """ | ||||||
| CREATE TABLE trait ( | CREATE TABLE trait ( | ||||||
|   trait_id INTEGER PRIMARY KEY, |   trait_id INTEGER PRIMARY KEY, | ||||||
|   traittype_id INTEGER, |   traittype_id INTEGER, | ||||||
|  | @ -92,40 +221,43 @@ CREATE TABLE trait ( | ||||||
|   FOREIGN KEY (traittype_id) REFERENCES traittype(traittype_id) |   FOREIGN KEY (traittype_id) REFERENCES traittype(traittype_id) | ||||||
| ); | ); | ||||||
| """ | """ | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
|    c.execute(table_two) |     c.execute(table_two) | ||||||
|    # insert data into traittype |     # insert data into traittype | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data['traittype']: |     for i in data['traittype']: | ||||||
|       inp_data.append((i,)) # trailing comma necessary for one-item tuple |         inp_data.append((i, ))  # trailing comma necessary for one-item tuple | ||||||
|    stmt = "INSERT INTO traittype (name) VALUES (?)" |     stmt = "INSERT INTO traittype (name) VALUES (?)" | ||||||
|    try: |     try: | ||||||
|       conn.executemany(stmt,inp_data) |         conn.executemany(stmt, inp_data) | ||||||
|    except: |     except: | ||||||
|       e = sys.exc_info()[0] |         e = sys.exc_info()[0] | ||||||
|       print("Error creating traittype: {}".format(e)) |         print("Error creating traittype: {}".format(e)) | ||||||
|       print(vars(e)) |         print(vars(e)) | ||||||
|    else: |     else: | ||||||
|       conn.commit() |         conn.commit() | ||||||
|    # insert data into trait |     # insert data into trait | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data['trait']: |     for i in data['trait']: | ||||||
|       inp_data.append((i['descr'], i['name'], i['type'])) # trailing comma necessary for one-item tuple |         inp_data.append( | ||||||
|    stmt = "INSERT INTO trait (descr, short_name, traittype_id) SELECT ?,?, traittype_id FROM traittype WHERE traittype.name=?" |             (i['descr'], i['name'], | ||||||
|    try: |              i['type']))  # trailing comma necessary for one-item tuple | ||||||
|       conn.executemany(stmt,inp_data) |     stmt = "INSERT INTO trait (descr, short_name, traittype_id) SELECT ?,?, traittype_id FROM traittype WHERE traittype.name=?" | ||||||
|    except sqlite3.Error as e: |     try: | ||||||
|       print("Error creating trait input: {}".format(e)) |         conn.executemany(stmt, inp_data) | ||||||
|    except: |     except sqlite3.Error as e: | ||||||
|       e = sys.exc_info()[0] |         print("Error creating trait input: {}".format(e)) | ||||||
|       print("Error creating trait: {}".format(e)) |     except: | ||||||
|       print(vars(e)) |         e = sys.exc_info()[0] | ||||||
|    else: |         print("Error creating trait: {}".format(e)) | ||||||
|       conn.commit() |         print(vars(e)) | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| def do_size(data, conn): | def do_size(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE size ( | CREATE TABLE size ( | ||||||
|   size_id INTEGER PRIMARY KEY, |   size_id INTEGER PRIMARY KEY, | ||||||
|   short_name TEXT NOT NULL UNIQUE, |   short_name TEXT NOT NULL UNIQUE, | ||||||
|  | @ -135,99 +267,104 @@ CREATE TABLE size ( | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i['name'], i['space_in_ft'], i['reach_tall_ft'], i['reach_long_ft'])) |         inp_data.append((i['name'], i['space_in_ft'], i['reach_tall_ft'], | ||||||
|  |                          i['reach_long_ft'])) | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO size (short_name, space_in_ft, reach_tall_ft, reach_long_ft) VALUES (?,?,?,?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         print("Error creating size") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO size (short_name, space_in_ft, reach_tall_ft, reach_long_ft) VALUES (?,?,?,?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       print("Error creating size") |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_weaponcategory(data, conn): | def do_weaponcategory(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE weaponcategory ( | CREATE TABLE weaponcategory ( | ||||||
|   weaponcategory_id INTEGER PRIMARY KEY, |   weaponcategory_id INTEGER PRIMARY KEY, | ||||||
|   "name" TEXT NOT NULL UNIQUE |   "name" TEXT NOT NULL UNIQUE | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i,)) # trailing comma necessary for one-item tuple |         inp_data.append((i, ))  # trailing comma necessary for one-item tuple | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO weaponcategory(name) VALUES (?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         e = sys.exc_info()[0] | ||||||
|  |         print("Error creating weaponcategory: {}".format(e)) | ||||||
|  |         print(vars(e)) | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO weaponcategory(name) VALUES (?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       e = sys.exc_info()[0] |  | ||||||
|       print("Error creating weaponcategory: {}".format(e)) |  | ||||||
|       print(vars(e)) |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_movement(data, conn): | def do_movement(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE movement ( | CREATE TABLE movement ( | ||||||
|   movement_id INTEGER PRIMARY KEY, |   movement_id INTEGER PRIMARY KEY, | ||||||
|   "name" TEXT UNIQUE NOT NULL |   "name" TEXT UNIQUE NOT NULL | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i,)) # trailing comma necessary for one-item tuple |         inp_data.append((i, ))  # trailing comma necessary for one-item tuple | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO movement(name) VALUES (?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         e = sys.exc_info()[0] | ||||||
|  |         print("Error creating movement: {}".format(e)) | ||||||
|  |         print(vars(e)) | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO movement(name) VALUES (?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       e = sys.exc_info()[0] |  | ||||||
|       print("Error creating movement: {}".format(e)) |  | ||||||
|       print(vars(e)) |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_frequency(data, conn): | def do_frequency(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE frequency ( | CREATE TABLE frequency ( | ||||||
|   freq_id INTEGER PRIMARY KEY, |   freq_id INTEGER PRIMARY KEY, | ||||||
|   freq_descr TEXT NOT NULL UNIQUE |   freq_descr TEXT NOT NULL UNIQUE | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i,)) # trailing comma necessary for one-item tuple |         inp_data.append((i, ))  # trailing comma necessary for one-item tuple | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO frequency(freq_descr) VALUES (?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         e = sys.exc_info()[0] | ||||||
|  |         print("Error creating frequency: {}".format(e)) | ||||||
|  |         print(vars(e)) | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO frequency(freq_descr) VALUES (?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       e = sys.exc_info()[0] |  | ||||||
|       print("Error creating frequency: {}".format(e)) |  | ||||||
|       print(vars(e)) |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_alignment(data, conn): | def do_alignment(data, conn): | ||||||
|    # print(data) |     # print(data) | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE alignment ( | CREATE TABLE alignment ( | ||||||
|   alignment_id INTEGER PRIMARY KEY, |   alignment_id INTEGER PRIMARY KEY, | ||||||
|   "name" TEXT UNIQUE NOT NULL, -- 'Lawful Good' |   "name" TEXT UNIQUE NOT NULL, -- 'Lawful Good' | ||||||
|  | @ -235,48 +372,50 @@ CREATE TABLE alignment ( | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i['name'], i['abbr'])) |         inp_data.append((i['name'], i['abbr'])) | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO alignment(name, abbr) VALUES (?,?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         print("Error creating alignment") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO alignment(name, abbr) VALUES (?,?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       print("Error creating alignment") |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_langrarity(data, conn): | def do_langrarity(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE langrarity ( | CREATE TABLE langrarity ( | ||||||
|   rarity_id INTEGER PRIMARY KEY, |   rarity_id INTEGER PRIMARY KEY, | ||||||
|   rarity_name TEXT NOT NULL UNIQUE |   rarity_name TEXT NOT NULL UNIQUE | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i,)) # trailing comma necessary for one-item tuple |         inp_data.append((i, ))  # trailing comma necessary for one-item tuple | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO langrarity(rarity_name) VALUES (?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         e = sys.exc_info()[0] | ||||||
|  |         print("Error creating langrarity: {}".format(e)) | ||||||
|  |         print(vars(e)) | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO langrarity(rarity_name) VALUES (?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       e = sys.exc_info()[0] |  | ||||||
|       print("Error creating langrarity: {}".format(e)) |  | ||||||
|       print(vars(e)) |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_actioncost(data, conn): | def do_actioncost(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE actioncost ( | CREATE TABLE actioncost ( | ||||||
|   actioncost_id INTEGER PRIMARY KEY, |   actioncost_id INTEGER PRIMARY KEY, | ||||||
|   name TEXT NOT NULL UNIQUE, |   name TEXT NOT NULL UNIQUE, | ||||||
|  | @ -284,23 +423,24 @@ CREATE TABLE actioncost ( | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i['name'], i['abbr'])) |         inp_data.append((i['name'], i['abbr'])) | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO actioncost(name, abbr) VALUES (?,?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         print("Error creating actioncost") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO actioncost(name, abbr) VALUES (?,?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       print("Error creating actioncost") |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def do_abilityscore(data, conn): | def do_abilityscore(data, conn): | ||||||
|    table = """ |     table = """ | ||||||
| CREATE TABLE abilityscore ( | CREATE TABLE abilityscore ( | ||||||
|    abilityscore_id INTEGER PRIMARY KEY, |    abilityscore_id INTEGER PRIMARY KEY, | ||||||
|    flag_rep INTEGER NOT NULL, |    flag_rep INTEGER NOT NULL, | ||||||
|  | @ -309,37 +449,38 @@ CREATE TABLE abilityscore ( | ||||||
| ); | ); | ||||||
|    """ |    """ | ||||||
| 
 | 
 | ||||||
|    c = conn.cursor() |     c = conn.cursor() | ||||||
|    c.execute(table) |     c.execute(table) | ||||||
| 
 | 
 | ||||||
|    inp_data = [] |     inp_data = [] | ||||||
|    for i in data: |     for i in data: | ||||||
|       inp_data.append((i['flag_rep'], i['short_name'], i['long_name'])) |         inp_data.append((i['flag_rep'], i['short_name'], i['long_name'])) | ||||||
|  | 
 | ||||||
|  |     stmt = "INSERT INTO abilityscore (flag_rep, short_name, long_name) VALUES (?,?,?)" | ||||||
|  |     try: | ||||||
|  |         conn.executemany(stmt, inp_data) | ||||||
|  |     except: | ||||||
|  |         print("Error creating abilityscore") | ||||||
|  |     else: | ||||||
|  |         conn.commit() | ||||||
| 
 | 
 | ||||||
|    stmt = "INSERT INTO abilityscore (flag_rep, short_name, long_name) VALUES (?,?,?)" |  | ||||||
|    try: |  | ||||||
|       conn.executemany(stmt,inp_data) |  | ||||||
|    except: |  | ||||||
|       print("Error creating abilityscore") |  | ||||||
|    else: |  | ||||||
|       conn.commit() |  | ||||||
| 
 | 
 | ||||||
| def get_db_conn(): | def get_db_conn(): | ||||||
|    ## Get database connection |     ## Get database connection | ||||||
|    conn = sqlite3.connect(DBFILE)  # eventually hook this up to be the main db |     conn = sqlite3.connect(DBFILE)  # eventually hook this up to be the main db | ||||||
|    ## Set pragmas |     ## Set pragmas | ||||||
|    pragma1 = "PRAGMA synchronous=OFF;" |     pragma1 = "PRAGMA synchronous=OFF;" | ||||||
|    pragma2 = "PRAGMA count_changes=OFF;" |     pragma2 = "PRAGMA count_changes=OFF;" | ||||||
|    pragma3 = "PRAGMA journal_mode=MEMORY;" |     pragma3 = "PRAGMA journal_mode=MEMORY;" | ||||||
|    pragma4 = "PRAGMA temp_store=MEMORY;" |     pragma4 = "PRAGMA temp_store=MEMORY;" | ||||||
|    pragma5 = "PRAGMA foreign_keys=ON;" |     pragma5 = "PRAGMA foreign_keys=ON;" | ||||||
|    conn.execute(pragma1) |     conn.execute(pragma1) | ||||||
|    conn.execute(pragma2) |     conn.execute(pragma2) | ||||||
|    conn.execute(pragma3) |     conn.execute(pragma3) | ||||||
|    conn.execute(pragma4) |     conn.execute(pragma4) | ||||||
|    conn.execute(pragma5) |     conn.execute(pragma5) | ||||||
|    return conn |     return conn | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| if __name__ == "__main__": | if __name__ == "__main__": | ||||||
|    main() |     main() | ||||||
|  |  | ||||||
|  | @ -0,0 +1,87 @@ | ||||||
|  | # TODO all the descriptions | ||||||
|  | skill: | ||||||
|  |   - name: Acrobatics | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 240 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Arcana | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 241 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Athletics | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 241 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Crafting | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 243 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Deception | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 245 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Diplomacy | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 246 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Intimidation | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 247 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Lore | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 247 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Medicine | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 248 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Nature | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 249 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Occultism | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 249 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Performance | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 250 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Religion | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 250 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Society | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 250 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Stealth | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 251 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Survival | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 252 | ||||||
|  |     descr: TODO | ||||||
|  |   - name: Thievery | ||||||
|  |     source: | ||||||
|  |     - abbr: CRB | ||||||
|  |       page_start: 253 | ||||||
|  |     descr: TODO | ||||||
		Loading…
	
		Reference in New Issue