Merge branch 'ancestries'; fixes #83

bradl/monsters-adult-gold-dragon
James Miller 2020-02-25 21:53:08 -06:00
commit 4c67f8374e
2 changed files with 167 additions and 1 deletions

View File

@ -13,7 +13,7 @@ abilityscore:
short_name: INT short_name: INT
- flag_rep: 16 - flag_rep: 16
long_name: Wisdom long_name: Wisdom
short_name: Wis short_name: WIS
- flag_rep: 32 - flag_rep: 32
long_name: Charisma long_name: Charisma
short_name: CHA short_name: CHA

View File

@ -110,6 +110,172 @@ def main():
data = yaml.full_load(yl) data = yaml.full_load(yl)
do_gear(data, conn) do_gear(data, conn)
# move on to ammo
with open('ancestries.yaml') as yl:
data = yaml.full_load(yl)
do_ancestries(data, conn)
def do_ancestries(data, conn):
# create tables
table = """
CREATE TABLE ancestries (
ancestry_id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE,
flavor_text TEXT NOT NULL,
hp INTEGER NOT NULL,
size_id INTEGER NOT NULL,
speed INTEGER NOT NULL,
vision_id INTEGER,
FOREIGN KEY (vision_id) REFERENCES senses(senses_id),
FOREIGN KEY (size_id) REFERENCES size(size_id)
);
"""
c = conn.cursor()
c.execute(table)
table = """
CREATE TABLE ancestries_boosts (
id INTEGER PRIMARY KEY,
ancestry_id INTEGER NOT NULL,
abilityscore_id INTEGER NOT NULL,
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
FOREIGN KEY (abilityscore_id) REFERENCES abilityscore(abilityscore_id)
);
"""
c.execute(table)
table = """
CREATE TABLE ancestries_flaws (
id INTEGER PRIMARY KEY,
ancestry_id INTEGER NOT NULL,
abilityscore_id INTEGER NOT NULL,
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
FOREIGN KEY (abilityscore_id) REFERENCES abilityscore(abilityscore_id)
);
"""
c.execute(table)
table = """
CREATE TABLE ancestries_traits (
id INTEGER PRIMARY KEY,
ancestry_id INTEGER NOT NULL,
trait_id INTEGER NOT NULL,
UNIQUE(ancestry_id, trait_id),
FOREIGN KEY (ancestry_id) REFERENCES ancestries(ancestry_id),
FOREIGN KEY (trait_id) REFERENCES trait(trait_id)
);
"""
c.execute(table)
# insert basics into ancestries table
inp_data = []
for i in data['ancestries']:
# Get the size_id
sstmt = """
SELECT size_id FROM size WHERE short_name=?;
"""
sinp_data = (i['size'],)
sres = c.execute(sstmt, sinp_data).fetchall()
sid = sres[0][0]
print(sid)
# Get the vision_id
vstmt = """
SELECT senses_id FROM senses WHERE name=?;
"""
vinp_data = (i['senses'],)
vres = c.execute(vstmt, vinp_data).fetchall()
print(vres)
if len(vres) > 0:
vid = vres[0][0]
else:
vid = None
print(vid)
#print(i)
inp_data.append((i['name'], i['flavor_text'], i['hp'], sid, i['speed'], vid))
stmt = "INSERT INTO ancestries(name, flavor_text, hp, size_id, speed, vision_id) VALUES (?,?,?,?,?,?)"
try:
conn.executemany(stmt, inp_data)
except sqlite3.Error as e:
print("Error creating ancestries: {}".format(e))
except:
print("Error creating ancestries something other than sqlite3 error")
else:
conn.commit()
# do boosts
for i in data['ancestries']:
boostlist = []
if i['boosts'] != None:
for j in i['boosts']:
boostlist.append((i['name'], j))
print("boostlist is:\t{}".format(boostlist))
stmt = """
INSERT INTO ancestries_boosts (ancestry_id, abilityscore_id) VALUES (
(SELECT ancestry_id FROM ancestries WHERE name=?),
(SELECT abilityscore_id FROM abilityscore WHERE short_name=?)
);
"""
try:
conn.executemany(stmt, boostlist)
except sqlite3.Error as e:
print("Error creating ancestries_boosts: {}".format(e))
except:
print("Error creating ancestries_boosts something other than sqlite3 error")
else:
conn.commit()
# do flaws
for i in data['ancestries']:
flawlist = []
if i['flaws'] != None:
for j in i['flaws']:
flawlist.append((i['name'], j))
print("flawlist is:\t{}".format(flawlist))
stmt = """
INSERT INTO ancestries_flaws (ancestry_id, abilityscore_id) VALUES (
(SELECT ancestry_id FROM ancestries WHERE name=?),
(SELECT abilityscore_id FROM abilityscore WHERE short_name=?)
);
"""
try:
conn.executemany(stmt, flawlist)
except sqlite3.Error as e:
print("Error creating ancestries_flaws: {}".format(e))
except:
print("Error creating ancestries_flaws something other than sqlite3 error")
else:
conn.commit()
# do traits
for i in data['ancestries']:
traitlist = []
if i['traits'] != None:
for j in i['traits']:
traitlist.append((i['name'], j))
print("traitlist is:\t{}".format(traitlist))
stmt = """
INSERT INTO ancestries_traits (ancestry_id, trait_id) VALUES (
(SELECT ancestry_id FROM ancestries WHERE name=?),
(SELECT trait_id FROM trait WHERE short_name=?)
);
"""
try:
conn.executemany(stmt, traitlist)
except sqlite3.Error as e:
print("Error creating ancestries_traits: {}".format(e))
except:
print("Error creating ancestries_traits something other than sqlite3 error")
else:
conn.commit()
def do_gear(data, conn): def do_gear(data, conn):
table = """ table = """
CREATE TABLE gear( CREATE TABLE gear(