From 58da99c86cfe8f9455f8afa9d33d5c2f07e5f73b Mon Sep 17 00:00:00 2001 From: steffen123 Date: Tue, 22 Jun 2010 21:05:33 +0200 Subject: [PATCH] removed 2 ancient unusued methods and updated TourneysPlayers tested bulk import for PS and FTP, player stats and positional stats also fixed a little bug that sqlite created HandsPlayers.actionString with type REAL instead of VARCHAR --- pyfpdb/AlchemyTables.py | 7 ++-- pyfpdb/Database.py | 48 ++------------------------- pyfpdb/SQL.py | 47 +++++++++++++------------- pyfpdb/Tourney.py | 73 +---------------------------------------- 4 files changed, 33 insertions(+), 142 deletions(-) diff --git a/pyfpdb/AlchemyTables.py b/pyfpdb/AlchemyTables.py index 003716b6..6052f56d 100644 --- a/pyfpdb/AlchemyTables.py +++ b/pyfpdb/AlchemyTables.py @@ -397,9 +397,10 @@ tourneys_players_table = Table('TourneysPlayers', metadata, Column('payinAmount', Integer), # INT NOT NULL Column('rank', Integer), # INT NOT NULL Column('winnings', Integer), # INT NOT NULL - Column('nbRebuys', Integer, default=0), # INT DEFAULT 0 - Column('nbAddons', Integer, default=0), # INT DEFAULT 0 - Column('nbKO', Integer, default=0), # INT DEFAULT 0 + Column('winningsCurrency', Text), # TEXT + Column('rebuyCount', Integer, default=0), # INT DEFAULT 0 + Column('addOnCount', Integer, default=0), # INT DEFAULT 0 + Column('koCount', Integer, default=0), # INT DEFAULT 0 Column('comment', Text), # TEXT Column('commentTs', DateTime), # DATETIME mysql_charset='utf8', diff --git a/pyfpdb/Database.py b/pyfpdb/Database.py index 7fbb3dbb..94dd5cb8 100644 --- a/pyfpdb/Database.py +++ b/pyfpdb/Database.py @@ -1854,48 +1854,6 @@ class Database: # Finish of NEWIMPORT CODE ################################# - - - def store_tourneys_players(self, tourney_id, player_ids, payin_amounts, ranks, winnings): - try: - result=[] - cursor = self.get_cursor() - #print "in store_tourneys_players. tourney_id:",tourney_id - #print "player_ids:",player_ids - #print "payin_amounts:",payin_amounts - #print "ranks:",ranks - #print "winnings:",winnings - for i in xrange(len(player_ids)): - try: - cursor.execute("savepoint ins_tplayer") - cursor.execute("""INSERT INTO TourneysPlayers - (tourneyId, playerId, payinAmount, rank, winnings) VALUES (%s, %s, %s, %s, %s)""".replace('%s', self.sql.query['placeholder']), - (tourney_id, player_ids[i], payin_amounts[i], ranks[i], winnings[i])) - - tmp = self.get_last_insert_id(cursor) - result.append(tmp) - #print "created new tourneys_players.id:", tmp - except: - cursor.execute("rollback to savepoint ins_tplayer") - cursor.execute("SELECT id FROM TourneysPlayers WHERE tourneyId=%s AND playerId+0=%s".replace('%s', self.sql.query['placeholder']) - ,(tourney_id, player_ids[i])) - tmp = cursor.fetchone() - #print "tried SELECTing tourneys_players.id:", tmp - try: - len(tmp) - result.append(tmp[0]) - except: - print "tplayer id not found for tourney,player %s,%s" % (tourney_id, player_ids[i]) - pass - except: - raise FpdbError( "store_tourneys_players error: " + str(sys.exc_value) ) - - cursor.execute("release savepoint ins_tplayer") - #print "store_tourneys_players returning", result - return result - #end def store_tourneys_players - - # read HandToWrite objects from q and insert into database def insert_queue_hands(self, q, maxwait=10, commitEachHand=True): n,fails,maxTries,firstWait = 0,0,4,0.1 @@ -1971,8 +1929,8 @@ class Database: print "***Error sending finish: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) # end def send_finish_msg(): - def tRecogniseTourneyType(self, tourney): - log.debug("Database.tRecogniseTourneyType") + def recogniseTourneyType(self, tourney): + log.debug("Database.recogniseTourneyType") typeId = 1 # Check if Tourney exists, and if so retrieve TTypeId : in that case, check values of the ttype cursor = self.get_cursor() @@ -2021,7 +1979,7 @@ class Database: typeId = self.get_last_insert_id(cursor) return typeId - #end def tRecogniseTourneyType + #end def recogniseTourneyType diff --git a/pyfpdb/SQL.py b/pyfpdb/SQL.py index ae6be545..4a83ca8d 100644 --- a/pyfpdb/SQL.py +++ b/pyfpdb/SQL.py @@ -602,7 +602,7 @@ class Sql: totalProfit INT, comment text, commentTs timestamp without time zone, - tourneysPlayersId BIGINT, + tourneysPlayersId BIGINT, FOREIGN KEY (tourneysPlayersId) REFERENCES TourneysPlayers(id), tourneyTypeId INT NOT NULL DEFAULT 1, FOREIGN KEY (tourneyTypeId) REFERENCES TourneyTypes(id), wonWhenSeenStreet1 FLOAT, @@ -692,9 +692,7 @@ class Sql: street3Raises SMALLINT, street4Raises SMALLINT, - actionString VARCHAR(15), - - FOREIGN KEY (tourneysPlayersId) REFERENCES TourneysPlayers(id))""" + actionString VARCHAR(15))""" elif db_server == 'sqlite': self.query['createHandsPlayersTable'] = """CREATE TABLE HandsPlayers ( id INTEGER PRIMARY KEY, @@ -808,7 +806,7 @@ class Sql: street2Raises INT, street3Raises INT, street4Raises INT, - actionString REAL) + actionString VARCHAR(15)) """ @@ -824,9 +822,10 @@ class Sql: payinAmount INT NOT NULL, rank INT NOT NULL, winnings INT NOT NULL, - nbRebuys INT DEFAULT 0, - nbAddons INT DEFAULT 0, - nbKO INT DEFAULT 0, + winningsCurrency VARCHAR(4) NOT NULL, + rebuyCount INT DEFAULT 0, + addOnCount INT DEFAULT 0, + koCount INT DEFAULT 0, comment TEXT, commentTs DATETIME) ENGINE=INNODB""" @@ -838,9 +837,10 @@ class Sql: payinAmount INT, rank INT, winnings INT, - nbRebuys INT DEFAULT 0, - nbAddons INT DEFAULT 0, - nbKO INT DEFAULT 0, + winningsCurrency VARCHAR(4), + rebuyCount INT DEFAULT 0, + addOnCount INT DEFAULT 0, + koCount INT DEFAULT 0, comment TEXT, commentTs timestamp without time zone)""" elif db_server == 'sqlite': @@ -851,9 +851,10 @@ class Sql: payinAmount INT, rank INT, winnings INT, - nbRebuys INT DEFAULT 0, - nbAddons INT DEFAULT 0, - nbKO INT DEFAULT 0, + winningsCurrency VARCHAR(4), + rebuyCount INT DEFAULT 0, + addOnCount INT DEFAULT 0, + koCount INT DEFAULT 0, comment TEXT, commentTs timestamp without time zone, FOREIGN KEY (tourneyId) REFERENCES Tourneys(id), @@ -3633,9 +3634,10 @@ class Sql: payinAmount, rank, winnings, - nbRebuys, - nbAddons, - nbKO, + winningsCurrency, + rebuyCount, + addOnCount, + koCount, comment, commentTs FROM TourneysPlayers @@ -3646,17 +3648,18 @@ class Sql: SET payinAmount = %s, rank = %s, winnings = %s, - nbRebuys = %s, - nbAddons = %s, - nbKO = %s, + winningsCurrency = %s, + rebuyCount = %s, + addOnCount = %s, + koCount = %s, comment = %s, commentTs = %s WHERE id=%s """ self.query['insertTourneysPlayers'] = """INSERT INTO TourneysPlayers - (tourneyId, playerId, payinAmount, rank, winnings, nbRebuys, nbAddons, nbKO, comment, commentTs) - VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) + (tourneyId, playerId, payinAmount, rank, winnings, winningsCurrency, rebuyCount, addOnCount, koCount, comment, commentTs) + VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) """ self.query['selectHandsPlayersWithWrongTTypeId'] = """SELECT id diff --git a/pyfpdb/Tourney.py b/pyfpdb/Tourney.py index aad65fe0..603dfbc1 100644 --- a/pyfpdb/Tourney.py +++ b/pyfpdb/Tourney.py @@ -162,7 +162,7 @@ class Tourney(object): # Starttime may not match the one in the Summary file : HH = time of the first Hand / could be slighltly different from the one in the summary file # Note: If the TourneyNo could be a unique id .... this would really be a relief to deal with matrix matches ==> Ask on the IRC / Ask Fulltilt ?? - dbTourneyTypeId = db.tRecogniseTourneyType(self) + dbTourneyTypeId = db.recogniseTourneyType(self) logging.debug("Tourney Type ID = %d" % dbTourneyTypeId) dbTourneyId = db.tRecognizeTourney(self, dbTourneyTypeId) logging.debug("Tourney ID = %d" % dbTourneyId) @@ -182,81 +182,10 @@ class Tourney(object): ttime = 0 return (stored, duplicates, partial, errors, ttime) - - def old_insert_from_Hand(self, db): - """ Function to insert Hand into database -Should not commit, and do minimal selects. Callers may want to cache commits -db: a connected Database object""" - # TODO: - # Players - base playerid and siteid tuple - sqlids = db.getSqlPlayerIDs([p[1] for p in self.players], self.siteId) - - #Gametypes - gtid = db.getGameTypeId(self.siteId, self.gametype) - - # HudCache data to come from DerivedStats class - # HandsActions - all actions for all players for all streets - self.actions - # Hands - Summary information of hand indexed by handId - gameinfo - #This should be moved to prepInsert - hh = {} - hh['siteHandNo'] = self.handid - hh['handStart'] = self.starttime - hh['gameTypeId'] = gtid - # seats TINYINT NOT NULL, - hh['tableName'] = self.tablename - hh['maxSeats'] = self.maxseats - hh['seats'] = len(sqlids) - # Flop turn and river may all be empty - add (likely) too many elements and trim with range - boardcards = self.board['FLOP'] + self.board['TURN'] + self.board['RIVER'] + [u'0x', u'0x', u'0x', u'0x', u'0x'] - cards = [Card.encodeCard(c) for c in boardcards[0:5]] - hh['boardcard1'] = cards[0] - hh['boardcard2'] = cards[1] - hh['boardcard3'] = cards[2] - hh['boardcard4'] = cards[3] - hh['boardcard5'] = cards[4] - - # texture smallint, - # playersVpi SMALLINT NOT NULL, /* num of players vpi */ - # Needs to be recorded - # playersAtStreet1 SMALLINT NOT NULL, /* num of players seeing flop/street4 */ - # Needs to be recorded - # playersAtStreet2 SMALLINT NOT NULL, - # Needs to be recorded - # playersAtStreet3 SMALLINT NOT NULL, - # Needs to be recorded - # playersAtStreet4 SMALLINT NOT NULL, - # Needs to be recorded - # playersAtShowdown SMALLINT NOT NULL, - # Needs to be recorded - # street0Raises TINYINT NOT NULL, /* num small bets paid to see flop/street4, including blind */ - # Needs to be recorded - # street1Raises TINYINT NOT NULL, /* num small bets paid to see turn/street5 */ - # Needs to be recorded - # street2Raises TINYINT NOT NULL, /* num big bets paid to see river/street6 */ - # Needs to be recorded - # street3Raises TINYINT NOT NULL, /* num big bets paid to see sd/street7 */ - # Needs to be recorded - # street4Raises TINYINT NOT NULL, /* num big bets paid to see showdown */ - # Needs to be recorded - - #print "DEBUG: self.getStreetTotals = (%s, %s, %s, %s, %s)" % self.getStreetTotals() - #FIXME: Pot size still in decimal, needs to be converted to cents - (hh['street1Pot'], hh['street2Pot'], hh['street3Pot'], hh['street4Pot'], hh['showdownPot']) = self.getStreetTotals() - - # comment TEXT, - # commentTs DATETIME - #print hh - handid = db.storeHand(hh) - # HandsPlayers - ? ... Do we fix winnings? - # Tourneys ? - # TourneysPlayers - - pass def select(self, tourneyId): """ Function to create Tourney object from database """ - def addPlayer(self, rank, name, winnings, payinAmount, nbRebuys, nbAddons, nbKO): """\