have basics of armor to sql; need to do sources and traits

bradl/monsters-adult-gold-dragon
James Miller 2020-02-21 17:23:54 -06:00
parent 7b597e0d6f
commit 848f455ccc
1 changed files with 77 additions and 6 deletions

View File

@ -15,6 +15,9 @@ def main():
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()
pragma = "PRAGMA foreign_keys = ON;"
c = conn.cursor()
c.execute(pragma)
# 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)
@ -97,12 +100,13 @@ def main():
data = yaml.full_load(yl) data = yaml.full_load(yl)
do_armor(data, conn) do_armor(data, conn)
def do_armor(data, conn): def do_armor(data, conn):
# Create the 3 tables # Create the 3 tables
table = """ table = """
CREATE TABLE armorcategory ( CREATE TABLE armorcategory (
armor_category_id INTEGER PRIMARY KEY, armor_category_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE); name TEXT NOT NULL UNIQUE);
""" """
c = conn.cursor() c = conn.cursor()
c.execute(table) c.execute(table)
@ -110,7 +114,7 @@ def do_armor(data, conn):
table = """ table = """
CREATE TABLE armorgroup ( CREATE TABLE armorgroup (
grp_id INTEGER PRIMARY KEY, grp_id INTEGER PRIMARY KEY,
short_name TEXT NOT NULL UNIQUE, name TEXT NOT NULL UNIQUE,
descr TEXT NOT NULL descr TEXT NOT NULL
); );
""" """
@ -120,7 +124,7 @@ def do_armor(data, conn):
CREATE TABLE armor ( CREATE TABLE armor (
armor_id INTEGER PRIMARY KEY, armor_id INTEGER PRIMARY KEY,
armor_category_id INTEGER NOT NULL, armor_category_id INTEGER NOT NULL,
short_name TEXT NOT NULL, name TEXT NOT NULL,
item_level INTEGER, item_level INTEGER,
price_text TEXT NOT NULL, price_text TEXT NOT NULL,
price_gp FLOAT NOT NULL, price_gp FLOAT NOT NULL,
@ -132,7 +136,7 @@ def do_armor(data, conn):
bulk_id INTEGER NOT NULL, bulk_id INTEGER NOT NULL,
grp_id INTEGER, grp_id INTEGER,
descr TEXT NOT NULL, descr TEXT NOT NULL,
FOREIGN KEY (bulk_id) REFERENCES bulks(bulk_id), FOREIGN KEY (bulk_id) REFERENCES bulk(bulk_id),
FOREIGN KEY (grp_id) REFERENCES armorgroup(grp_id) FOREIGN KEY (grp_id) REFERENCES armorgroup(grp_id)
); );
""" """
@ -148,7 +152,69 @@ def do_armor(data, conn):
""" """
c.execute(table) c.execute(table)
pass # insert basics into armorcategory table
inp_data = []
for i in data['armorcategory']:
print(i)
inp_data.append((i, ))
stmt = "INSERT INTO armorcategory(name) VALUES (?)"
try:
conn.executemany(stmt, inp_data)
except sqlite3.Error as e:
print("Error creating armorcategory: {}".format(e))
except:
print(
"Error creating armorcategory something other than sqlite3 error")
else:
conn.commit()
# insert basics into armorgroup table
inp_data = []
for i in data['armorgroup']:
# print(i)
inp_data.append((i['name'], i['descr']))
stmt = "INSERT INTO armorgroup(name, descr) VALUES (?,?)"
try:
conn.executemany(stmt, inp_data)
except sqlite3.Error as e:
print("Error creating armorgroup: {}".format(e))
except:
print("Error creating armorgroup something other than sqlite3 error")
else:
conn.commit()
# insert basics into armor table
inp_data = []
for i in data['armor']:
# print(i)
inp_data.append(
(i['ac_bonus'], i['bulk'], i['category'], i['check_penalty'],
i['dex_cap'], i['group'], i['level'], i['name'], i['price_gp'],
i['price_text'], i['speed_penalty'], i['strength'], i['descr']))
stmt = """
INSERT INTO armor
(ac_bonus, bulk_id, armor_category_id, check_penalty, dex_cap, grp_id, item_level, name, price_gp, price_text, speed_penalty, strength, descr)
VALUES (?,(SELECT bulk_id FROM bulk WHERE short_name=?),(SELECT armor_category_id FROM armorcategory WHERE armorcategory.name=?),?,?,(SELECT grp_id from armorgroup where armorgroup.name=?),?,?,?,?,?,?,?);
"""
# traits in armor
# sources in everything
# linking it up
#
# stmt = "INSERT INTO senses(name, descr) VALUES (?,?)"
try:
conn.executemany(stmt, inp_data)
except sqlite3.Error as e:
print("Error creating armorbasiscs: {}".format(e))
except:
print("Error creating armorbasics something other than sqlite3 error")
else:
conn.commit()
def do_triggers(data, conn): def do_triggers(data, conn):
table = """ table = """
@ -173,6 +239,7 @@ CREATE TABLE trigger (
else: else:
conn.commit() conn.commit()
def do_requirements(data, conn): def do_requirements(data, conn):
table = """ table = """
CREATE TABLE requirement ( CREATE TABLE requirement (
@ -196,6 +263,7 @@ CREATE TABLE requirement (
else: else:
conn.commit() conn.commit()
def do_spells(data, conn): def do_spells(data, conn):
# load the helper info # load the helper info
do_spelltype(data, conn) do_spelltype(data, conn)
@ -929,6 +997,7 @@ CREATE TABLE sourceentry_damagecategory (
""" """
c.execute(table) c.execute(table)
def do_senses(data, conn): def do_senses(data, conn):
table = """ table = """
@ -958,7 +1027,7 @@ CREATE TABLE sourceentry_senses (
# insert basics into senses table # insert basics into senses table
inp_data = [] inp_data = []
for i in data['senses']: for i in data['senses']:
print(i) # print(i)
inp_data.append((i['name'], i['descr'])) inp_data.append((i['name'], i['descr']))
stmt = "INSERT INTO senses(name, descr) VALUES (?,?)" stmt = "INSERT INTO senses(name, descr) VALUES (?,?)"
@ -988,6 +1057,7 @@ CREATE TABLE sourceentry_senses (
# print("srcs: {}".format(srcs)) # print("srcs: {}".format(srcs))
do_sourceentry_to_senses(srcs, conn) do_sourceentry_to_senses(srcs, conn)
# TODO ugggh;;; this is soooo ugly and needs refactoring but it's working # TODO ugggh;;; this is soooo ugly and needs refactoring but it's working
def do_sourceentry_to_senses(srcs, conn): def do_sourceentry_to_senses(srcs, conn):
c = conn.cursor() c = conn.cursor()
@ -1039,6 +1109,7 @@ def do_sourceentry_to_senses(srcs, conn):
# print("committed linkstmt") # print("committed linkstmt")
conn.commit() conn.commit()
def do_skills(data, conn): def do_skills(data, conn):
# make skill table # make skill table
table = """ table = """