From a0ec13d2ed3242acbf9260e8353bda1cfe64dc29 Mon Sep 17 00:00:00 2001 From: blitzman Date: Mon, 2 Jan 2017 18:45:08 -0500 Subject: [PATCH] More tweaks --- eos/db/saveddata/databaseRepair.py | 31 +++++++++++++++--------------- eos/db/saveddata/queries.py | 16 --------------- 2 files changed, 16 insertions(+), 31 deletions(-) diff --git a/eos/db/saveddata/databaseRepair.py b/eos/db/saveddata/databaseRepair.py index c0e1b427e..ede0f2fde 100644 --- a/eos/db/saveddata/databaseRepair.py +++ b/eos/db/saveddata/databaseRepair.py @@ -19,7 +19,6 @@ import sqlalchemy import logging -from eos.db.saveddata.queries import executeDatabaseQuery logger = logging.getLogger(__name__) @@ -42,7 +41,7 @@ class DatabaseCleanup: "WHERE characterID NOT IN (SELECT ID from characters)") row = results.first() - if row['num']: + if row and row['num']: delete = saveddata_engine.execute("DELETE FROM characterSkills WHERE characterID NOT IN (SELECT ID from characters)") logger.error("Database corruption found. Cleaning up %d records.", delete.rowcount) @@ -60,19 +59,20 @@ class DatabaseCleanup: results = saveddata_engine.execute("SELECT COUNT(*) AS num FROM fits WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL") row = results.first() - if row['num']: + if row and row['num']: # Get Uniform damage pattern ID - query_return = executeDatabaseQuery(saveddata_engine, "SELECT ID FROM damagePatterns WHERE name = 'Uniform'") + query = saveddata_engine.execute("SELECT ID FROM damagePatterns WHERE name = 'Uniform'") + rows = query.fetchall() - if query_return.__len__() <= 0: + if len(rows) == 0: logger.error("Missing uniform damage pattern.") - elif query_return.__len__() > 1: + elif len(rows) > 1: logger.error("More than one uniform damage pattern found.") else: - uniform_damage_pattern_id = query_return[0]['ID'] + uniform_damage_pattern_id = rows[0]['ID'] update = saveddata_engine.execute("UPDATE 'fits' SET 'damagePatternID' = ? " - "WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL", - uniform_damage_pattern_id) + "WHERE damagePatternID NOT IN (SELECT ID FROM damagePatterns) OR damagePatternID IS NULL", + uniform_damage_pattern_id) logger.error("Database corruption found. Cleaning up %d records.", update.rowcount) except sqlalchemy.exc.DatabaseError: logger.error("Failed to connect to database.") @@ -87,17 +87,18 @@ class DatabaseCleanup: if row['num']: # Get All 5 character ID - query_return = executeDatabaseQuery(saveddata_engine, "SELECT ID FROM characters WHERE name = 'All 5'") + query = saveddata_engine.execute("SELECT ID FROM characters WHERE name = 'All 5'") + rows = query.fetchall() - if query_return.__len__() <= 0: + if len(rows) == 0: logger.error("Missing 'All 5' character.") - elif query_return.__len__() > 1: + elif len(rows) > 1: logger.error("More than one 'All 5' character found.") else: - all5_id = query_return[0]['ID'] + all5_id = rows[0]['ID'] update = saveddata_engine.execute("UPDATE 'fits' SET 'characterID' = ? " - "WHERE characterID not in (select ID from characters) OR characterID IS NULL", - all5_id) + "WHERE characterID not in (select ID from characters) OR characterID IS NULL", + all5_id) logger.error("Database corruption found. Cleaning up %d records.", update.rowcount) except sqlalchemy.exc.DatabaseError: logger.error("Failed to connect to database.") diff --git a/eos/db/saveddata/queries.py b/eos/db/saveddata/queries.py index c18dff912..cb3033cc1 100644 --- a/eos/db/saveddata/queries.py +++ b/eos/db/saveddata/queries.py @@ -407,22 +407,6 @@ def getCrestCharacter(lookfor, eager=None): raise TypeError("Need integer or string as argument") return character -def executeDatabaseQuery(saveddata_engine, query): - # Executes a query against the database, and returns a dict instead of a resultsproxy - results = saveddata_engine.execute(query) - - return_list = [] - - for row in results: - internal_row = {} - for key in row._keymap: - idx = row._keymap[key][2] - internal_row.update({key: row._row[idx]}) - - return_list.append(internal_row) - - return return_list - def getOverrides(itemID, eager=None): if isinstance(itemID, int): return saveddata_session.query(Override).filter(Override.itemID == itemID).all()