From f2532585713b4c3e1037b7dfbaa496a4d1bcd609 Mon Sep 17 00:00:00 2001 From: James Miller Date: Wed, 13 Nov 2019 22:40:55 -0600 Subject: [PATCH] fix typo on langs.yaml and get YAML->SQL working on langs --- data/yaml/gendb.py | 60 ++++++++++++++++++++++++++++++++++++++++++++ data/yaml/langs.yaml | 2 +- 2 files changed, 61 insertions(+), 1 deletion(-) diff --git a/data/yaml/gendb.py b/data/yaml/gendb.py index cf01470..4f91452 100644 --- a/data/yaml/gendb.py +++ b/data/yaml/gendb.py @@ -61,6 +61,66 @@ def main(): data = yaml.full_load(yl) do_bulks(data, conn) + # move on to langs + with open('langs.yaml') as yl: + data = yaml.full_load(yl) + do_langs(data, conn) + +def do_langs(data, conn): + table = """ +CREATE TABLE lang ( + lang_id INTEGER PRIMARY KEY, + name TEXT NOT NULL UNIQUE, + speakers TEXT NOT NULL, + rarity_id INTEGER NOT NULL, + sourceentry_id INTEGER, + FOREIGN KEY (rarity_id) REFERENCES langrarity(rarity_id), + FOREIGN KEY (sourceentry_id) REFERENCES sourceentry(sourceentry_id) +); + """ + c = conn.cursor() + c.execute(table) + + # print(data) + for i in data['language']: + # print(i) + srcentrydata = [] + for j in i['source']: + abbr = j['abbr'] + page_start = j['page_start'] + # Not all YAML entries have page_stop data + if 'page_stop' in j: + page_stop = j['page_stop'] + else: + page_stop = page_start + srcentrydata.append((abbr, page_start, page_stop)) + # need to insert sourceentry data first but check and make sure the + # length is only one + if len(srcentrydata) != 1: + raise AssertionError('length of srcentrydata should only be 1, no more no less, on langs') + # print("length of srcentrydata:{}\tsrcentrydata:{}".format(len(srcentrydata),srcentrydata)) + util_insert_into_sourceentry(srcentrydata, conn) + + stmt = """ +INSERT INTO lang(name, speakers, rarity_id, sourceentry_id) +VALUES (?,?, + (SELECT rarity_id FROM langrarity WHERE rarity_name=?), + (SELECT sourceentry_id FROM sourceentry + WHERE source_id=(SELECT source_id FROM source WHERE abbr=?) + AND page_start=? + AND page_stop=? + ) + ); + """ + print('executing on name:{}'.format(i['name'])) + try: + conn.execute(stmt, (i['name'], i['speakers'], i['rarity'], + srcentrydata[0][0],srcentrydata[0][1],srcentrydata[0][2])) + except Exception as e: + print("Error creating lang: {}".format(e)) + else: + conn.commit() + def do_bulks(data, conn): table = """ CREATE TABLE bulk ( diff --git a/data/yaml/langs.yaml b/data/yaml/langs.yaml index dc8f021..7530c20 100644 --- a/data/yaml/langs.yaml +++ b/data/yaml/langs.yaml @@ -11,7 +11,7 @@ language: page_stop: 65 - name: Draconic speakers: Dragons, reptilian humanoids - rarity: Commmon + rarity: Common source: - abbr: CRB page_start: 65