From c79400018240ec8c461bcd87df7b7515b646c6c2 Mon Sep 17 00:00:00 2001 From: Matt Bernhardt Date: Sun, 11 Feb 2018 21:15:33 -0500 Subject: [PATCH 1/3] Adds disconnectDB() method calls where appropriate --- trapp/check_games.py | 3 +++ trapp/compile_game.py | 13 ++++++++++++- trapp/import_game.py | 3 +++ trapp/import_goal.py | 9 +++++++++ trapp/import_lineup.py | 7 +++++++ trapp/import_player.py | 3 +++ trapp/importer.py | 3 +++ 7 files changed, 40 insertions(+), 1 deletion(-) diff --git a/trapp/check_games.py b/trapp/check_games.py index 52c372e..1a1e26b 100644 --- a/trapp/check_games.py +++ b/trapp/check_games.py @@ -41,3 +41,6 @@ def checkGames(self): [self.reviewCompetition(record['CompetitionID'], startYear) for record in competitions] + + c.disconnectDB() + del c diff --git a/trapp/compile_game.py b/trapp/compile_game.py index 02404c8..f0b9efa 100644 --- a/trapp/compile_game.py +++ b/trapp/compile_game.py @@ -19,6 +19,9 @@ def assemblePlusMinus(self, record): # Transfer impact information to record record = dict(record, **impact[0]) + ge.disconnectDB() + del ge + return record def assembleStatLine(self, record): @@ -82,12 +85,18 @@ def doCompile(self): # Trying a delay to prevent buffer space problems time.sleep(0.01) + gs.disconnectDB() + del gs + return True def getAppearanceList(self): gm = GameMinute() gm.connectDB() - return gm.lookupIDlistByYear() + result = gm.lookupIDlistByYear() + gm.disconnectDB() + del gm + return result def getEventSummary(self, item): ge = GameEvent() @@ -96,4 +105,6 @@ def getEventSummary(self, item): if(len(temp) == 0): temp = [{'Goals': 0, 'Ast': 0}] item = dict(list(item.items()) + list(temp[0].items())) + ge.disconnectDB() + del ge return item diff --git a/trapp/import_game.py b/trapp/import_game.py index 74955ac..3f8743d 100644 --- a/trapp/import_game.py +++ b/trapp/import_game.py @@ -30,4 +30,7 @@ def importRecord(self, record): # Something(s) found, so we skip self.processMissingRecord(found, len(found)) + g.disconnectDB() + del g + return True diff --git a/trapp/import_goal.py b/trapp/import_goal.py index 3b310c5..095540e 100644 --- a/trapp/import_goal.py +++ b/trapp/import_goal.py @@ -82,6 +82,9 @@ def correctValues(self): # Log the corrected record for later inspection self.log.message(' Outcome:\n ' + str(record)) + g.disconnectDB() + del g + return True def disambiguatePlayers(self, record, result): @@ -126,6 +129,9 @@ def importRecord(self, record): e.saveDict(item, self.log) self.imported += 1 + e.disconnectDB() + del e + return True def lookupPlayerID(self, event): @@ -139,6 +145,9 @@ def lookupPlayerID(self, event): PlayerID = p.lookupIDbyGoal(event, self.log) + p.disconnectDB() + del p + # Swap team and opponent IDs back for own goals event = self.swapTeamIDs(event) diff --git a/trapp/import_lineup.py b/trapp/import_lineup.py index 48d8914..2f4591b 100644 --- a/trapp/import_lineup.py +++ b/trapp/import_lineup.py @@ -62,6 +62,8 @@ def importPlayer(self, player): gm.saveDict(player, self.log) self.imported += 1 return True + gm.disconnectDB() + del gm def importRecord(self, record): self.log.message('\nImporting lineup ' + str(record)) @@ -110,6 +112,9 @@ def importRecord(self, record): # At this point we have self.players - but need to store them [self.importPlayer(player) for player in self.players] + g.disconnectDB() + del g + return True def parseLineup(self, lineup, game, teamID, duration): @@ -184,6 +189,8 @@ def parsePlayer(self, starter, gameID, teamID, duration): 'PlayerName': player, } playerID = p.lookupIDbyName(needle, self.log) + p.disconnectDB() + del p if (len(playerID) == 1): playerID = playerID[0] diff --git a/trapp/import_player.py b/trapp/import_player.py index 6af87f6..466fcb2 100644 --- a/trapp/import_player.py +++ b/trapp/import_player.py @@ -39,4 +39,7 @@ def importRecord(self, record): self.log.message('') + p.disconnectDB() + del p + return True diff --git a/trapp/importer.py b/trapp/importer.py index 4ea1c53..9ac8367 100644 --- a/trapp/importer.py +++ b/trapp/importer.py @@ -103,6 +103,9 @@ def lookupTeamID(self, teamname): # At this point we know teamID is a list of length 1, so we return # the first value only return teamID[0] + # Clean up + team.disconnectDB() + del team def parseMinute(self, minute): # This reads in a string representing a minute denotation, and From fb4512a5c0997f0aadd129c9fb3aed78c8d1741b Mon Sep 17 00:00:00 2001 From: Matt Bernhardt Date: Sun, 11 Feb 2018 21:59:50 -0500 Subject: [PATCH 2/3] Tries more aggressive cleanup inside database object --- trapp/database.py | 1 + 1 file changed, 1 insertion(+) diff --git a/trapp/database.py b/trapp/database.py index 35eeb34..d758ed2 100644 --- a/trapp/database.py +++ b/trapp/database.py @@ -24,6 +24,7 @@ def connect(self): def disconnect(self): self.cursor.close() self.cnx.close() + del self.cnx def convertDate(self, date): # This converts a python date object into a MySQL-format date string From 9186de97d2a913e3c1faf5c7264bb65ba187d1d9 Mon Sep 17 00:00:00 2001 From: Matt Bernhardt Date: Sun, 11 Feb 2018 22:00:44 -0500 Subject: [PATCH 3/3] Adds quarter-second delay in most import methods to give database connections time to clear. Ugh. --- trapp/import_lineup.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/trapp/import_lineup.py b/trapp/import_lineup.py index 2f4591b..9604d50 100644 --- a/trapp/import_lineup.py +++ b/trapp/import_lineup.py @@ -4,6 +4,7 @@ from trapp.gameminute import GameMinute from trapp.player import Player from datetime import datetime +from time import sleep class ImporterLineups(Importer): @@ -62,6 +63,7 @@ def importPlayer(self, player): gm.saveDict(player, self.log) self.imported += 1 return True + sleep(0.25) gm.disconnectDB() del gm @@ -112,6 +114,9 @@ def importRecord(self, record): # At this point we have self.players - but need to store them [self.importPlayer(player) for player in self.players] + # Sleep + sleep(0.25) + g.disconnectDB() del g