fix typo on langs.yaml and get YAML->SQL working on langs
parent
2e9bee76ad
commit
f253258571
|
@ -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 (
|
||||
|
|
|
@ -11,7 +11,7 @@ language:
|
|||
page_stop: 65
|
||||
- name: Draconic
|
||||
speakers: Dragons, reptilian humanoids
|
||||
rarity: Commmon
|
||||
rarity: Common
|
||||
source:
|
||||
- abbr: CRB
|
||||
page_start: 65
|
||||
|
|
Loading…
Reference in New Issue