more moves into Database.py, better exception handling, store hudcache stats for holdem tourneys (some maybe no use? it's a start anyway - need to add NL/FL switch on Filter)
This commit is contained in:
parent
859d18734c
commit
f45038673c
|
@ -68,19 +68,27 @@ class Database:
|
||||||
self.sql = SQL.Sql(type = self.type, db_server = db_params['db-server'])
|
self.sql = SQL.Sql(type = self.type, db_server = db_params['db-server'])
|
||||||
else:
|
else:
|
||||||
self.sql = sql
|
self.sql = sql
|
||||||
|
|
||||||
|
# config while trying out new hudcache mechanism
|
||||||
|
self.use_date_in_hudcache = True
|
||||||
|
|
||||||
# To add to config:
|
# To add to config:
|
||||||
|
self.hud_session_gap = 30 # Gap (minutes) between hands that indicates a change of session
|
||||||
|
# (hands every 2 mins for 1 hour = one session, if followed
|
||||||
|
# by a 40 minute gap and then more hands on same table that is
|
||||||
|
# a new session)
|
||||||
self.hud_style = 'T' # A=All-time
|
self.hud_style = 'T' # A=All-time
|
||||||
# S=Session
|
# S=Session
|
||||||
# T=timed (last n days)
|
# T=timed (last n days)
|
||||||
# Future values may also include:
|
# Future values may also include:
|
||||||
# H=Hands (last n hands)
|
# H=Hands (last n hands)
|
||||||
self.hud_hands = 1000 # Max number of hands from each player to use for hud stats
|
self.hud_hands = 2000 # Max number of hands from each player to use for hud stats
|
||||||
self.hud_days = 30 # Max number of days from each player to use for hud stats
|
self.hud_days = 30 # Max number of days from each player to use for hud stats
|
||||||
self.hud_session_gap = 30 # Gap (minutes) between hands that indicates a change of session
|
|
||||||
# (hands every 2 mins for 1 hour = one session, if followed
|
self.hud_hero_style = 'T' # Duplicate set of vars just for hero
|
||||||
# by a 40 minute gap and then more hands on same table that is
|
self.hud_hero_hands = 2000
|
||||||
# a new session)
|
self.hud_hero_days = 30
|
||||||
|
|
||||||
self.cursor = self.fdb.cursor
|
self.cursor = self.fdb.cursor
|
||||||
|
|
||||||
if self.fdb.wrongDbVersion == False:
|
if self.fdb.wrongDbVersion == False:
|
||||||
|
@ -329,69 +337,74 @@ class Database:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_last_insert_id(self):
|
def get_last_insert_id(self):
|
||||||
return self.fdb.getLastInsertId()
|
try:
|
||||||
|
ret = self.fdb.getLastInsertId()
|
||||||
|
except:
|
||||||
|
print "get_last_insert_id error:", str(sys.exc_value)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
#stores a stud/razz hand into the database
|
#stores a stud/razz hand into the database
|
||||||
def ring_stud(self, config, settings, db, cursor, base, category, site_hand_no, gametype_id, hand_start_time
|
def ring_stud(self, config, settings, base, category, site_hand_no, gametype_id, hand_start_time
|
||||||
,names, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes
|
,names, player_ids, start_cashes, antes, card_values, card_suits, winnings, rakes
|
||||||
,action_types, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName
|
,action_types, allIns, action_amounts, actionNos, hudImportData, maxSeats, tableName
|
||||||
,seatNos):
|
,seatNos):
|
||||||
|
|
||||||
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
try:
|
||||||
|
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
||||||
|
|
||||||
hands_id = fpdb_simple.storeHands(self.backend, db, cursor, site_hand_no, gametype_id
|
hands_id = self.storeHands(self.backend, site_hand_no, gametype_id
|
||||||
,hand_start_time, names, tableName, maxSeats, hudImportData
|
,hand_start_time, names, tableName, maxSeats, hudImportData
|
||||||
,(None, None, None, None, None), (None, None, None, None, None))
|
,(None, None, None, None, None), (None, None, None, None, None))
|
||||||
|
|
||||||
#print "before calling store_hands_players_stud, antes:", antes
|
#print "before calling store_hands_players_stud, antes:", antes
|
||||||
hands_players_ids = fpdb_simple.store_hands_players_stud(self.backend, db, cursor, hands_id, player_ids
|
hands_players_ids = self.store_hands_players_stud(self.backend, hands_id, player_ids
|
||||||
,start_cashes, antes, card_values
|
,start_cashes, antes, card_values
|
||||||
,card_suits, winnings, rakes, seatNos)
|
,card_suits, winnings, rakes, seatNos)
|
||||||
|
|
||||||
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
||||||
fpdb_simple.storeHudCache(self.backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
self.storeHudCache(self.backend, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
|
except:
|
||||||
|
print "ring_stud error: " + str(sys.exc_value) # in case exception doesn't get printed
|
||||||
|
raise fpdb_simple.FpdbError("ring_stud error: " + str(sys.exc_value))
|
||||||
|
|
||||||
if self.saveActions:
|
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, action_types
|
|
||||||
,allIns, action_amounts, actionNos)
|
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def ring_stud
|
#end def ring_stud
|
||||||
|
|
||||||
def ring_holdem_omaha(self, config, settings, db, cursor, base, category, site_hand_no, gametype_id
|
def ring_holdem_omaha(self, config, settings, base, category, site_hand_no, gametype_id
|
||||||
,hand_start_time, names, player_ids, start_cashes, positions, card_values
|
,hand_start_time, names, player_ids, start_cashes, positions, card_values
|
||||||
,card_suits, board_values, board_suits, winnings, rakes, action_types, allIns
|
,card_suits, board_values, board_suits, winnings, rakes, action_types, allIns
|
||||||
,action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
|
,action_amounts, actionNos, hudImportData, maxSeats, tableName, seatNos):
|
||||||
"""stores a holdem/omaha hand into the database"""
|
"""stores a holdem/omaha hand into the database"""
|
||||||
|
|
||||||
t0 = time()
|
try:
|
||||||
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
t0 = time()
|
||||||
t1 = time()
|
#print "in ring_holdem_omaha"
|
||||||
fpdb_simple.fill_board_cards(board_values, board_suits)
|
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
||||||
t2 = time()
|
t1 = time()
|
||||||
|
fpdb_simple.fill_board_cards(board_values, board_suits)
|
||||||
|
t2 = time()
|
||||||
|
|
||||||
hands_id = fpdb_simple.storeHands(self.backend, db, cursor, site_hand_no, gametype_id
|
hands_id = self.storeHands(self.backend, site_hand_no, gametype_id
|
||||||
,hand_start_time, names, tableName, maxSeats,
|
,hand_start_time, names, tableName, maxSeats
|
||||||
hudImportData, board_values, board_suits)
|
,hudImportData, board_values, board_suits)
|
||||||
#TEMPORARY CALL! - Just until all functions are migrated
|
#TEMPORARY CALL! - Just until all functions are migrated
|
||||||
t3 = time()
|
t3 = time()
|
||||||
hands_players_ids = fpdb_simple.store_hands_players_holdem_omaha(
|
hands_players_ids = self.store_hands_players_holdem_omaha(
|
||||||
self.backend, db, cursor, category, hands_id, player_ids, start_cashes
|
self.backend, category, hands_id, player_ids, start_cashes
|
||||||
, positions, card_values, card_suits, winnings, rakes, seatNos, hudImportData)
|
, positions, card_values, card_suits, winnings, rakes, seatNos, hudImportData)
|
||||||
t4 = time()
|
t4 = time()
|
||||||
#print "ring holdem, backend=%d" % backend
|
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
||||||
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
self.storeHudCache(self.backend, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
fpdb_simple.storeHudCache(self.backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
t5 = time()
|
||||||
t5 = time()
|
#print "fills=(%4.3f) saves=(%4.3f,%4.3f,%4.3f)" % (t2-t0, t3-t2, t4-t3, t5-t4)
|
||||||
t6 = time()
|
except:
|
||||||
if self.saveActions:
|
print "ring_holdem_omaha error: " + str(sys.exc_value) # in case exception doesn't get printed
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts, actionNos)
|
raise fpdb_simple.FpdbError("ring_holdem_omaha error: " + str(sys.exc_value))
|
||||||
t7 = time()
|
|
||||||
#print "fills=(%4.3f) saves=(%4.3f,%4.3f,%4.3f,%4.3f)" % (t2-t0, t3-t2, t4-t3, t5-t4, t6-t5)
|
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def ring_holdem_omaha
|
#end def ring_holdem_omaha
|
||||||
|
|
||||||
def tourney_holdem_omaha(self, config, settings, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout
|
def tourney_holdem_omaha(self, config, settings, base, category, siteTourneyNo, buyin, fee, knockout
|
||||||
,entries, prizepool, tourney_start, payin_amounts, ranks, tourneyTypeId
|
,entries, prizepool, tourney_start, payin_amounts, ranks, tourneyTypeId
|
||||||
,siteId #end of tourney specific params
|
,siteId #end of tourney specific params
|
||||||
,site_hand_no, gametype_id, hand_start_time, names, player_ids
|
,site_hand_no, gametype_id, hand_start_time, names, player_ids
|
||||||
|
@ -400,52 +413,60 @@ class Database:
|
||||||
,actionNos, hudImportData, maxSeats, tableName, seatNos):
|
,actionNos, hudImportData, maxSeats, tableName, seatNos):
|
||||||
"""stores a tourney holdem/omaha hand into the database"""
|
"""stores a tourney holdem/omaha hand into the database"""
|
||||||
|
|
||||||
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
try:
|
||||||
fpdb_simple.fill_board_cards(board_values, board_suits)
|
fpdb_simple.fillCardArrays(len(names), base, category, card_values, card_suits)
|
||||||
|
fpdb_simple.fill_board_cards(board_values, board_suits)
|
||||||
|
|
||||||
tourney_id = fpdb_simple.store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, tourney_start)
|
tourney_id = self.store_tourneys(tourneyTypeId, siteTourneyNo, entries, prizepool, tourney_start)
|
||||||
tourneys_players_ids = fpdb_simple.store_tourneys_players(cursor, tourney_id, player_ids, payin_amounts, ranks, winnings)
|
tourneys_players_ids = self.store_tourneys_players(tourney_id, player_ids, payin_amounts, ranks, winnings)
|
||||||
|
|
||||||
hands_id = fpdb_simple.storeHands(self.backend, db, cursor, site_hand_no, gametype_id
|
hands_id = self.storeHands(self.backend, site_hand_no, gametype_id
|
||||||
,hand_start_time, names, tableName, maxSeats)
|
,hand_start_time, names, tableName, maxSeats
|
||||||
|
,hudImportData, board_values, board_suits)
|
||||||
|
|
||||||
hands_players_ids = fpdb_simple.store_hands_players_holdem_omaha_tourney(
|
hands_players_ids = self.store_hands_players_holdem_omaha_tourney(
|
||||||
self.backend, db, cursor, category, hands_id, player_ids, start_cashes, positions
|
self.backend, category, hands_id, player_ids, start_cashes, positions
|
||||||
, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids)
|
, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids
|
||||||
|
, hudImportData)
|
||||||
|
|
||||||
#print "tourney holdem, backend=%d" % backend
|
#print "tourney holdem, backend=%d" % backend
|
||||||
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
||||||
fpdb_simple.storeHudCache(self.backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
self.storeHudCache(self.backend, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
|
except:
|
||||||
|
print "tourney_holdem_omaha error: " + str(sys.exc_value) # in case exception doesn't get printed
|
||||||
|
raise fpdb_simple.FpdbError("tourney_holdem_omaha error: " + str(sys.exc_value))
|
||||||
|
|
||||||
if self.saveActions:
|
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, action_types, allIns, action_amounts, actionNos)
|
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def tourney_holdem_omaha
|
#end def tourney_holdem_omaha
|
||||||
|
|
||||||
def tourney_stud(self, config, settings, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries
|
def tourney_stud(self, config, settings, base, category, siteTourneyNo, buyin, fee, knockout, entries
|
||||||
,prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteId
|
,prizepool, tourneyStartTime, payin_amounts, ranks, tourneyTypeId, siteId
|
||||||
,siteHandNo, gametypeId, handStartTime, names, playerIds, startCashes, antes
|
,siteHandNo, gametypeId, handStartTime, names, playerIds, startCashes, antes
|
||||||
,cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts
|
,cardValues, cardSuits, winnings, rakes, actionTypes, allIns, actionAmounts
|
||||||
,actionNos, hudImportData, maxSeats, tableName, seatNos):
|
,actionNos, hudImportData, maxSeats, tableName, seatNos):
|
||||||
#stores a tourney stud/razz hand into the database
|
#stores a tourney stud/razz hand into the database
|
||||||
|
|
||||||
fpdb_simple.fillCardArrays(len(names), base, category, cardValues, cardSuits)
|
try:
|
||||||
|
fpdb_simple.fillCardArrays(len(names), base, category, cardValues, cardSuits)
|
||||||
|
|
||||||
tourney_id = fpdb_simple.store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, tourneyStartTime)
|
tourney_id = self.store_tourneys(tourneyTypeId, siteTourneyNo, entries, prizepool, tourneyStartTime)
|
||||||
|
|
||||||
tourneys_players_ids = fpdb_simple.store_tourneys_players(cursor, tourney_id, playerIds, payin_amounts, ranks, winnings)
|
tourneys_players_ids = self.store_tourneys_players(tourney_id, playerIds, payin_amounts, ranks, winnings)
|
||||||
|
|
||||||
hands_id = fpdb_simple.storeHands(self.backend, db, cursor, siteHandNo, gametypeId, handStartTime, names, tableName, maxSeats)
|
hands_id = self.storeHands( self.backend, siteHandNo, gametypeId
|
||||||
|
, handStartTime, names, tableName, maxSeats
|
||||||
|
, hudImportData, board_values, board_suits )
|
||||||
|
|
||||||
hands_players_ids = fpdb_simple.store_hands_players_stud_tourney(self.backend, db, cursor, hands_id
|
hands_players_ids = self.store_hands_players_stud_tourney(self.backend, hands_id
|
||||||
, playerIds, startCashes, antes, cardValues, cardSuits
|
, playerIds, startCashes, antes, cardValues, cardSuits
|
||||||
, winnings, rakes, seatNos, tourneys_players_ids)
|
, winnings, rakes, seatNos, tourneys_players_ids)
|
||||||
|
|
||||||
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
if 'dropHudCache' not in settings or settings['dropHudCache'] != 'drop':
|
||||||
fpdb_simple.storeHudCache(self.backend, cursor, base, category, gametypeId, hand_start_time, playerIds, hudImportData)
|
self.storeHudCache(self.backend, base, category, gametypeId, hand_start_time, playerIds, hudImportData)
|
||||||
|
except:
|
||||||
|
print "tourney_stud error: " + str(sys.exc_value) # in case exception doesn't get printed
|
||||||
|
raise fpdb_simple.FpdbError("tourney_stud error: " + str(sys.exc_value))
|
||||||
|
|
||||||
if self.saveActions:
|
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, actionTypes, allIns, actionAmounts, actionNos)
|
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def tourney_stud
|
#end def tourney_stud
|
||||||
|
|
||||||
|
@ -465,14 +486,13 @@ class Database:
|
||||||
stime = time()
|
stime = time()
|
||||||
if self.backend == self.MYSQL_INNODB:
|
if self.backend == self.MYSQL_INNODB:
|
||||||
try:
|
try:
|
||||||
self.cursor.execute(self.sql.query['analyze'])
|
self.get_cursor().execute(self.sql.query['analyze'])
|
||||||
except:
|
except:
|
||||||
print "Error during analyze"
|
print "Error during analyze:", str(sys.exc_value)
|
||||||
elif self.backend == self.PGSQL:
|
elif self.backend == self.PGSQL:
|
||||||
self.connection.set_isolation_level(0) # allow vacuum to work
|
self.connection.set_isolation_level(0) # allow vacuum to work
|
||||||
try:
|
try:
|
||||||
self.cursor = self.get_cursor()
|
self.get_cursor().execute(self.sql.query['analyze'])
|
||||||
self.cursor.execute(self.sql.query['analyze'])
|
|
||||||
except:
|
except:
|
||||||
print "Error during analyze:", str(sys.exc_value)
|
print "Error during analyze:", str(sys.exc_value)
|
||||||
self.connection.set_isolation_level(1) # go back to normal isolation level
|
self.connection.set_isolation_level(1) # go back to normal isolation level
|
||||||
|
@ -481,6 +501,552 @@ class Database:
|
||||||
print "Analyze took %.1f seconds" % (atime,)
|
print "Analyze took %.1f seconds" % (atime,)
|
||||||
#end def analyzeDB
|
#end def analyzeDB
|
||||||
|
|
||||||
|
|
||||||
|
# Start of Hand Writing routines. Idea is to provide a mixture of routines to store Hand data
|
||||||
|
# however the calling prog requires. Main aims:
|
||||||
|
# - existing static routines from fpdb_simple just modified
|
||||||
|
|
||||||
|
|
||||||
|
def storeHands(self, backend, site_hand_no, gametype_id
|
||||||
|
,hand_start_time, names, tableName, maxSeats, hudCache
|
||||||
|
,board_values, board_suits):
|
||||||
|
|
||||||
|
cards = [Card.cardFromValueSuit(v,s) for v,s in zip(board_values,board_suits)]
|
||||||
|
#stores into table hands:
|
||||||
|
try:
|
||||||
|
self.get_cursor().execute ("""INSERT INTO Hands
|
||||||
|
(siteHandNo, gametypeId, handStart, seats, tableName, importTime, maxSeats
|
||||||
|
,boardcard1,boardcard2,boardcard3,boardcard4,boardcard5
|
||||||
|
,playersVpi, playersAtStreet1, playersAtStreet2
|
||||||
|
,playersAtStreet3, playersAtStreet4, playersAtShowdown
|
||||||
|
,street0Raises, street1Raises, street2Raises
|
||||||
|
,street3Raises, street4Raises, street1Pot
|
||||||
|
,street2Pot, street3Pot, street4Pot
|
||||||
|
,showdownPot
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||||
|
"""
|
||||||
|
, (site_hand_no, gametype_id, hand_start_time, len(names), tableName, datetime.today(), maxSeats
|
||||||
|
,cards[0], cards[1], cards[2], cards[3], cards[4]
|
||||||
|
,hudCache['playersVpi'], hudCache['playersAtStreet1'], hudCache['playersAtStreet2']
|
||||||
|
,hudCache['playersAtStreet3'], hudCache['playersAtStreet4'], hudCache['playersAtShowdown']
|
||||||
|
,hudCache['street0Raises'], hudCache['street1Raises'], hudCache['street2Raises']
|
||||||
|
,hudCache['street3Raises'], hudCache['street4Raises'], hudCache['street1Pot']
|
||||||
|
,hudCache['street2Pot'], hudCache['street3Pot'], hudCache['street4Pot']
|
||||||
|
,hudCache['showdownPot']
|
||||||
|
))
|
||||||
|
ret = self.get_last_insert_id()
|
||||||
|
except:
|
||||||
|
ret = -1
|
||||||
|
raise fpdb_simple.FpdbError( "storeHands error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return ret
|
||||||
|
#end def storeHands
|
||||||
|
|
||||||
|
def store_hands_players_holdem_omaha(self, backend, category, hands_id, player_ids, start_cashes
|
||||||
|
,positions, card_values, card_suits, winnings, rakes, seatNos, hudCache):
|
||||||
|
result=[]
|
||||||
|
|
||||||
|
# postgres (and others?) needs the booleans converted to ints before saving:
|
||||||
|
# (or we could just save them as boolean ... but then we can't sum them so easily in sql ???)
|
||||||
|
# NO - storing booleans for now so don't need this
|
||||||
|
#hudCacheInt = {}
|
||||||
|
#for k,v in hudCache.iteritems():
|
||||||
|
# if k in ('wonWhenSeenStreet1', 'wonAtSD', 'totalProfit'):
|
||||||
|
# hudCacheInt[k] = v
|
||||||
|
# else:
|
||||||
|
# hudCacheInt[k] = map(lambda x: 1 if x else 0, v)
|
||||||
|
|
||||||
|
try:
|
||||||
|
inserts = []
|
||||||
|
for i in xrange(len(player_ids)):
|
||||||
|
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
||||||
|
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
||||||
|
|
||||||
|
if (category=="holdem"):
|
||||||
|
startCards = Card.twoStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1])
|
||||||
|
card3 = None
|
||||||
|
card4 = None
|
||||||
|
elif (category=="omahahi" or category=="omahahilo"):
|
||||||
|
startCards = Card.fourStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1]
|
||||||
|
,card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3])
|
||||||
|
card3 = Card.cardFromValueSuit(card_values[i][2], card_suits[i][2])
|
||||||
|
card4 = Card.cardFromValueSuit(card_values[i][3], card_suits[i][3])
|
||||||
|
else:
|
||||||
|
raise fpdb_simple.FpdbError("invalid category")
|
||||||
|
|
||||||
|
inserts.append( (
|
||||||
|
hands_id, player_ids[i], start_cashes[i], positions[i], 1, # tourneytypeid
|
||||||
|
card1, card2, card3, card4, startCards,
|
||||||
|
winnings[i], rakes[i], seatNos[i], hudCache['totalProfit'][i],
|
||||||
|
hudCache['street0VPI'][i], hudCache['street0Aggr'][i],
|
||||||
|
hudCache['street0_3BChance'][i], hudCache['street0_3BDone'][i],
|
||||||
|
hudCache['street1Seen'][i], hudCache['street2Seen'][i], hudCache['street3Seen'][i],
|
||||||
|
hudCache['street4Seen'][i], hudCache['sawShowdown'][i],
|
||||||
|
hudCache['street1Aggr'][i], hudCache['street2Aggr'][i], hudCache['street3Aggr'][i], hudCache['street4Aggr'][i],
|
||||||
|
hudCache['otherRaisedStreet1'][i], hudCache['otherRaisedStreet2'][i],
|
||||||
|
hudCache['otherRaisedStreet3'][i], hudCache['otherRaisedStreet4'][i],
|
||||||
|
hudCache['foldToOtherRaisedStreet1'][i], hudCache['foldToOtherRaisedStreet2'][i],
|
||||||
|
hudCache['foldToOtherRaisedStreet3'][i], hudCache['foldToOtherRaisedStreet4'][i],
|
||||||
|
hudCache['wonWhenSeenStreet1'][i], hudCache['wonAtSD'][i],
|
||||||
|
hudCache['stealAttemptChance'][i], hudCache['stealAttempted'][i], hudCache['foldBbToStealChance'][i],
|
||||||
|
hudCache['foldedBbToSteal'][i], hudCache['foldSbToStealChance'][i], hudCache['foldedSbToSteal'][i],
|
||||||
|
hudCache['street1CBChance'][i], hudCache['street1CBDone'][i], hudCache['street2CBChance'][i], hudCache['street2CBDone'][i],
|
||||||
|
hudCache['street3CBChance'][i], hudCache['street3CBDone'][i], hudCache['street4CBChance'][i], hudCache['street4CBDone'][i],
|
||||||
|
hudCache['foldToStreet1CBChance'][i], hudCache['foldToStreet1CBDone'][i],
|
||||||
|
hudCache['foldToStreet2CBChance'][i], hudCache['foldToStreet2CBDone'][i],
|
||||||
|
hudCache['foldToStreet3CBChance'][i], hudCache['foldToStreet3CBDone'][i],
|
||||||
|
hudCache['foldToStreet4CBChance'][i], hudCache['foldToStreet4CBDone'][i],
|
||||||
|
hudCache['street1CheckCallRaiseChance'][i], hudCache['street1CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street2CheckCallRaiseChance'][i], hudCache['street2CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street3CheckCallRaiseChance'][i], hudCache['street3CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street4CheckCallRaiseChance'][i], hudCache['street4CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street0Calls'][i], hudCache['street1Calls'][i], hudCache['street2Calls'][i], hudCache['street3Calls'][i], hudCache['street4Calls'][i],
|
||||||
|
hudCache['street0Bets'][i], hudCache['street1Bets'][i], hudCache['street2Bets'][i], hudCache['street3Bets'][i], hudCache['street4Bets'][i]
|
||||||
|
) )
|
||||||
|
self.get_cursor().executemany ("""
|
||||||
|
INSERT INTO HandsPlayers
|
||||||
|
(handId, playerId, startCash, position, tourneyTypeId,
|
||||||
|
card1, card2, card3, card4, startCards, winnings, rake, seatNo, totalProfit,
|
||||||
|
street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
||||||
|
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
||||||
|
street1Aggr, street2Aggr, street3Aggr, street4Aggr,
|
||||||
|
otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4,
|
||||||
|
foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4,
|
||||||
|
wonWhenSeenStreet1, wonAtSD,
|
||||||
|
stealAttemptChance, stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
||||||
|
street1CBChance, street1CBDone, street2CBChance, street2CBDone,
|
||||||
|
street3CBChance, street3CBDone, street4CBChance, street4CBDone,
|
||||||
|
foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone,
|
||||||
|
foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone,
|
||||||
|
street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone,
|
||||||
|
street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone,
|
||||||
|
street0Calls, street1Calls, street2Calls, street3Calls, street4Calls,
|
||||||
|
street0Bets, street1Bets, street2Bets, street3Bets, street4Bets
|
||||||
|
)
|
||||||
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
|
||||||
|
,inserts )
|
||||||
|
result.append( self.get_last_insert_id() )
|
||||||
|
|
||||||
|
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
||||||
|
#result.append(cursor.fetchall()[0][0])
|
||||||
|
result.append( self.get_last_insert_id() )
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_hands_players_holdem_omaha error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return result
|
||||||
|
#end def store_hands_players_holdem_omaha
|
||||||
|
|
||||||
|
def store_hands_players_stud(self, backend, hands_id, player_ids, start_cashes, antes,
|
||||||
|
card_values, card_suits, winnings, rakes, seatNos):
|
||||||
|
#stores hands_players rows for stud/razz games. returns an array of the resulting IDs
|
||||||
|
|
||||||
|
try:
|
||||||
|
result=[]
|
||||||
|
#print "before inserts in store_hands_players_stud, antes:", antes
|
||||||
|
for i in xrange(len(player_ids)):
|
||||||
|
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
||||||
|
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
||||||
|
card3 = Card.cardFromValueSuit(card_values[i][2], card_suits[i][2])
|
||||||
|
card4 = Card.cardFromValueSuit(card_values[i][3], card_suits[i][3])
|
||||||
|
card5 = Card.cardFromValueSuit(card_values[i][4], card_suits[i][4])
|
||||||
|
card6 = Card.cardFromValueSuit(card_values[i][5], card_suits[i][5])
|
||||||
|
card7 = Card.cardFromValueSuit(card_values[i][6], card_suits[i][6])
|
||||||
|
|
||||||
|
self.get_cursor().execute ("""INSERT INTO HandsPlayers
|
||||||
|
(handId, playerId, startCash, ante, tourneyTypeId,
|
||||||
|
card1, card2,
|
||||||
|
card3, card4,
|
||||||
|
card5, card6,
|
||||||
|
card7, winnings, rake, seatNo)
|
||||||
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
|
||||||
|
(hands_id, player_ids[i], start_cashes[i], antes[i], 1,
|
||||||
|
card1, card2,
|
||||||
|
card3, card4,
|
||||||
|
card5, card6,
|
||||||
|
card7, winnings[i], rakes[i], seatNos[i]))
|
||||||
|
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
||||||
|
#result.append(cursor.fetchall()[0][0])
|
||||||
|
result.append( self.get_last_insert_id() )
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_hands_players_stud error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return result
|
||||||
|
#end def store_hands_players_stud
|
||||||
|
|
||||||
|
def store_hands_players_holdem_omaha_tourney(self, backend, category, hands_id, player_ids
|
||||||
|
,start_cashes, positions, card_values, card_suits
|
||||||
|
,winnings, rakes, seatNos, tourneys_players_ids
|
||||||
|
,hudCache):
|
||||||
|
#stores hands_players for tourney holdem/omaha hands
|
||||||
|
|
||||||
|
try:
|
||||||
|
result=[]
|
||||||
|
inserts = []
|
||||||
|
for i in xrange(len(player_ids)):
|
||||||
|
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
||||||
|
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
||||||
|
|
||||||
|
if len(card_values[0])==2:
|
||||||
|
startCards = Card.twoStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1])
|
||||||
|
card3 = None
|
||||||
|
card4 = None
|
||||||
|
elif len(card_values[0])==4:
|
||||||
|
startCards = Card.fourStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1]
|
||||||
|
,card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3])
|
||||||
|
card3 = Card.cardFromValueSuit(card_values[i][2], card_suits[i][2])
|
||||||
|
card4 = Card.cardFromValueSuit(card_values[i][3], card_suits[i][3])
|
||||||
|
else:
|
||||||
|
raise FpdbError ("invalid card_values length:"+str(len(card_values[0])))
|
||||||
|
|
||||||
|
inserts.append( (hands_id, player_ids[i], start_cashes[i], positions[i], 1, # tourneytypeid
|
||||||
|
card1, card2, card3, card4, startCards,
|
||||||
|
winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i], hudCache['totalProfit'][i],
|
||||||
|
hudCache['street0VPI'][i], hudCache['street0Aggr'][i],
|
||||||
|
hudCache['street0_3BChance'][i], hudCache['street0_3BDone'][i],
|
||||||
|
hudCache['street1Seen'][i], hudCache['street2Seen'][i], hudCache['street3Seen'][i],
|
||||||
|
hudCache['street4Seen'][i], hudCache['sawShowdown'][i],
|
||||||
|
hudCache['street1Aggr'][i], hudCache['street2Aggr'][i], hudCache['street3Aggr'][i], hudCache['street4Aggr'][i],
|
||||||
|
hudCache['otherRaisedStreet1'][i], hudCache['otherRaisedStreet2'][i],
|
||||||
|
hudCache['otherRaisedStreet3'][i], hudCache['otherRaisedStreet4'][i],
|
||||||
|
hudCache['foldToOtherRaisedStreet1'][i], hudCache['foldToOtherRaisedStreet2'][i],
|
||||||
|
hudCache['foldToOtherRaisedStreet3'][i], hudCache['foldToOtherRaisedStreet4'][i],
|
||||||
|
hudCache['wonWhenSeenStreet1'][i], hudCache['wonAtSD'][i],
|
||||||
|
hudCache['stealAttemptChance'][i], hudCache['stealAttempted'][i], hudCache['foldBbToStealChance'][i],
|
||||||
|
hudCache['foldedBbToSteal'][i], hudCache['foldSbToStealChance'][i], hudCache['foldedSbToSteal'][i],
|
||||||
|
hudCache['street1CBChance'][i], hudCache['street1CBDone'][i], hudCache['street2CBChance'][i], hudCache['street2CBDone'][i],
|
||||||
|
hudCache['street3CBChance'][i], hudCache['street3CBDone'][i], hudCache['street4CBChance'][i], hudCache['street4CBDone'][i],
|
||||||
|
hudCache['foldToStreet1CBChance'][i], hudCache['foldToStreet1CBDone'][i],
|
||||||
|
hudCache['foldToStreet2CBChance'][i], hudCache['foldToStreet2CBDone'][i],
|
||||||
|
hudCache['foldToStreet3CBChance'][i], hudCache['foldToStreet3CBDone'][i],
|
||||||
|
hudCache['foldToStreet4CBChance'][i], hudCache['foldToStreet4CBDone'][i],
|
||||||
|
hudCache['street1CheckCallRaiseChance'][i], hudCache['street1CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street2CheckCallRaiseChance'][i], hudCache['street2CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street3CheckCallRaiseChance'][i], hudCache['street3CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street4CheckCallRaiseChance'][i], hudCache['street4CheckCallRaiseDone'][i],
|
||||||
|
hudCache['street0Calls'][i], hudCache['street1Calls'][i], hudCache['street2Calls'][i],
|
||||||
|
hudCache['street3Calls'][i], hudCache['street4Calls'][i],
|
||||||
|
hudCache['street0Bets'][i], hudCache['street1Bets'][i], hudCache['street2Bets'][i],
|
||||||
|
hudCache['street3Bets'][i], hudCache['street4Bets'][i]
|
||||||
|
) )
|
||||||
|
|
||||||
|
self.get_cursor().executemany ("""
|
||||||
|
INSERT INTO HandsPlayers
|
||||||
|
(handId, playerId, startCash, position, tourneyTypeId,
|
||||||
|
card1, card2, card3, card4, startCards, winnings, rake, tourneysPlayersId, seatNo, totalProfit,
|
||||||
|
street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
||||||
|
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
||||||
|
street1Aggr, street2Aggr, street3Aggr, street4Aggr,
|
||||||
|
otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4,
|
||||||
|
foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4,
|
||||||
|
wonWhenSeenStreet1, wonAtSD,
|
||||||
|
stealAttemptChance, stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
||||||
|
street1CBChance, street1CBDone, street2CBChance, street2CBDone,
|
||||||
|
street3CBChance, street3CBDone, street4CBChance, street4CBDone,
|
||||||
|
foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone,
|
||||||
|
foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone,
|
||||||
|
street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone,
|
||||||
|
street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone,
|
||||||
|
street0Calls, street1Calls, street2Calls, street3Calls, street4Calls,
|
||||||
|
street0Bets, street1Bets, street2Bets, street3Bets, street4Bets
|
||||||
|
)
|
||||||
|
VALUES
|
||||||
|
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
|
||||||
|
,inserts )
|
||||||
|
|
||||||
|
result.append( self.get_last_insert_id() )
|
||||||
|
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
||||||
|
#result.append(cursor.fetchall()[0][0])
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_hands_players_holdem_omaha_tourney error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return result
|
||||||
|
#end def store_hands_players_holdem_omaha_tourney
|
||||||
|
|
||||||
|
def store_hands_players_stud_tourney(self, backend, hands_id, player_ids, start_cashes,
|
||||||
|
antes, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids):
|
||||||
|
#stores hands_players for tourney stud/razz hands
|
||||||
|
|
||||||
|
try:
|
||||||
|
result=[]
|
||||||
|
for i in xrange(len(player_ids)):
|
||||||
|
self.get_cursor().execute ("""INSERT INTO HandsPlayers
|
||||||
|
(handId, playerId, startCash, ante,
|
||||||
|
card1Value, card1Suit, card2Value, card2Suit,
|
||||||
|
card3Value, card3Suit, card4Value, card4Suit,
|
||||||
|
card5Value, card5Suit, card6Value, card6Suit,
|
||||||
|
card7Value, card7Suit, winnings, rake, tourneysPlayersId, seatNo)
|
||||||
|
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s, %s)""",
|
||||||
|
(hands_id, player_ids[i], start_cashes[i], antes[i],
|
||||||
|
card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
|
||||||
|
card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
|
||||||
|
card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
|
||||||
|
card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
|
||||||
|
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
||||||
|
#result.append(cursor.fetchall()[0][0])
|
||||||
|
result.append( self.get_last_insert_id() )
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_hands_players_stud_tourney error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return result
|
||||||
|
#end def store_hands_players_stud_tourney
|
||||||
|
|
||||||
|
def storeHudCache(self, backend, base, category, gametypeId, hand_start_time, playerIds, hudImportData):
|
||||||
|
"""Update cached statistics. If update fails because no record exists, do an insert.
|
||||||
|
Can't use array updates here (not easily anyway) because we need to insert any rows
|
||||||
|
that don't get updated."""
|
||||||
|
|
||||||
|
# if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
||||||
|
try:
|
||||||
|
if self.use_date_in_hudcache:
|
||||||
|
#print "key =", "d%02d%02d%02d " % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
|
||||||
|
styleKey = "d%02d%02d%02d" % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
|
||||||
|
else:
|
||||||
|
# hard-code styleKey as 'A000000' (all-time cache, no key) for now
|
||||||
|
styleKey = 'A000000'
|
||||||
|
|
||||||
|
#print "storeHudCache, len(playerIds)=", len(playerIds), " len(vpip)=" \
|
||||||
|
#, len(hudImportData['street0VPI']), " len(totprof)=", len(hudImportData['totalProfit'])
|
||||||
|
for player in xrange(len(playerIds)):
|
||||||
|
|
||||||
|
# Set up a clean row
|
||||||
|
row=[]
|
||||||
|
row.append(0)#blank for id
|
||||||
|
row.append(gametypeId)
|
||||||
|
row.append(playerIds[player])
|
||||||
|
row.append(len(playerIds))#seats
|
||||||
|
for i in xrange(len(hudImportData)+2):
|
||||||
|
row.append(0)
|
||||||
|
|
||||||
|
if base=="hold":
|
||||||
|
row[4]=hudImportData['position'][player]
|
||||||
|
else:
|
||||||
|
row[4]=0
|
||||||
|
row[5]=1 #tourneysGametypeId
|
||||||
|
row[6]+=1 #HDs
|
||||||
|
if hudImportData['street0VPI'][player]: row[7]+=1
|
||||||
|
if hudImportData['street0Aggr'][player]: row[8]+=1
|
||||||
|
if hudImportData['street0_3BChance'][player]: row[9]+=1
|
||||||
|
if hudImportData['street0_3BDone'][player]: row[10]+=1
|
||||||
|
if hudImportData['street1Seen'][player]: row[11]+=1
|
||||||
|
if hudImportData['street2Seen'][player]: row[12]+=1
|
||||||
|
if hudImportData['street3Seen'][player]: row[13]+=1
|
||||||
|
if hudImportData['street4Seen'][player]: row[14]+=1
|
||||||
|
if hudImportData['sawShowdown'][player]: row[15]+=1
|
||||||
|
if hudImportData['street1Aggr'][player]: row[16]+=1
|
||||||
|
if hudImportData['street2Aggr'][player]: row[17]+=1
|
||||||
|
if hudImportData['street3Aggr'][player]: row[18]+=1
|
||||||
|
if hudImportData['street4Aggr'][player]: row[19]+=1
|
||||||
|
if hudImportData['otherRaisedStreet1'][player]: row[20]+=1
|
||||||
|
if hudImportData['otherRaisedStreet2'][player]: row[21]+=1
|
||||||
|
if hudImportData['otherRaisedStreet3'][player]: row[22]+=1
|
||||||
|
if hudImportData['otherRaisedStreet4'][player]: row[23]+=1
|
||||||
|
if hudImportData['foldToOtherRaisedStreet1'][player]: row[24]+=1
|
||||||
|
if hudImportData['foldToOtherRaisedStreet2'][player]: row[25]+=1
|
||||||
|
if hudImportData['foldToOtherRaisedStreet3'][player]: row[26]+=1
|
||||||
|
if hudImportData['foldToOtherRaisedStreet4'][player]: row[27]+=1
|
||||||
|
if hudImportData['wonWhenSeenStreet1'][player]!=0.0: row[28]+=hudImportData['wonWhenSeenStreet1'][player]
|
||||||
|
if hudImportData['wonAtSD'][player]!=0.0: row[29]+=hudImportData['wonAtSD'][player]
|
||||||
|
if hudImportData['stealAttemptChance'][player]: row[30]+=1
|
||||||
|
if hudImportData['stealAttempted'][player]: row[31]+=1
|
||||||
|
if hudImportData['foldBbToStealChance'][player]: row[32]+=1
|
||||||
|
if hudImportData['foldedBbToSteal'][player]: row[33]+=1
|
||||||
|
if hudImportData['foldSbToStealChance'][player]: row[34]+=1
|
||||||
|
if hudImportData['foldedSbToSteal'][player]: row[35]+=1
|
||||||
|
|
||||||
|
if hudImportData['street1CBChance'][player]: row[36]+=1
|
||||||
|
if hudImportData['street1CBDone'][player]: row[37]+=1
|
||||||
|
if hudImportData['street2CBChance'][player]: row[38]+=1
|
||||||
|
if hudImportData['street2CBDone'][player]: row[39]+=1
|
||||||
|
if hudImportData['street3CBChance'][player]: row[40]+=1
|
||||||
|
if hudImportData['street3CBDone'][player]: row[41]+=1
|
||||||
|
if hudImportData['street4CBChance'][player]: row[42]+=1
|
||||||
|
if hudImportData['street4CBDone'][player]: row[43]+=1
|
||||||
|
|
||||||
|
if hudImportData['foldToStreet1CBChance'][player]: row[44]+=1
|
||||||
|
if hudImportData['foldToStreet1CBDone'][player]: row[45]+=1
|
||||||
|
if hudImportData['foldToStreet2CBChance'][player]: row[46]+=1
|
||||||
|
if hudImportData['foldToStreet2CBDone'][player]: row[47]+=1
|
||||||
|
if hudImportData['foldToStreet3CBChance'][player]: row[48]+=1
|
||||||
|
if hudImportData['foldToStreet3CBDone'][player]: row[49]+=1
|
||||||
|
if hudImportData['foldToStreet4CBChance'][player]: row[50]+=1
|
||||||
|
if hudImportData['foldToStreet4CBDone'][player]: row[51]+=1
|
||||||
|
|
||||||
|
#print "player=", player
|
||||||
|
#print "len(totalProfit)=", len(hudImportData['totalProfit'])
|
||||||
|
if hudImportData['totalProfit'][player]:
|
||||||
|
row[52]+=hudImportData['totalProfit'][player]
|
||||||
|
|
||||||
|
if hudImportData['street1CheckCallRaiseChance'][player]: row[53]+=1
|
||||||
|
if hudImportData['street1CheckCallRaiseDone'][player]: row[54]+=1
|
||||||
|
if hudImportData['street2CheckCallRaiseChance'][player]: row[55]+=1
|
||||||
|
if hudImportData['street2CheckCallRaiseDone'][player]: row[56]+=1
|
||||||
|
if hudImportData['street3CheckCallRaiseChance'][player]: row[57]+=1
|
||||||
|
if hudImportData['street3CheckCallRaiseDone'][player]: row[58]+=1
|
||||||
|
if hudImportData['street4CheckCallRaiseChance'][player]: row[59]+=1
|
||||||
|
if hudImportData['street4CheckCallRaiseDone'][player]: row[60]+=1
|
||||||
|
|
||||||
|
# Try to do the update first:
|
||||||
|
cursor = self.get_cursor()
|
||||||
|
num = cursor.execute("""UPDATE HudCache
|
||||||
|
SET HDs=HDs+%s, street0VPI=street0VPI+%s, street0Aggr=street0Aggr+%s,
|
||||||
|
street0_3BChance=street0_3BChance+%s, street0_3BDone=street0_3BDone+%s,
|
||||||
|
street1Seen=street1Seen+%s, street2Seen=street2Seen+%s, street3Seen=street3Seen+%s,
|
||||||
|
street4Seen=street4Seen+%s, sawShowdown=sawShowdown+%s,
|
||||||
|
street1Aggr=street1Aggr+%s, street2Aggr=street2Aggr+%s, street3Aggr=street3Aggr+%s,
|
||||||
|
street4Aggr=street4Aggr+%s, otherRaisedStreet1=otherRaisedStreet1+%s,
|
||||||
|
otherRaisedStreet2=otherRaisedStreet2+%s, otherRaisedStreet3=otherRaisedStreet3+%s,
|
||||||
|
otherRaisedStreet4=otherRaisedStreet4+%s,
|
||||||
|
foldToOtherRaisedStreet1=foldToOtherRaisedStreet1+%s, foldToOtherRaisedStreet2=foldToOtherRaisedStreet2+%s,
|
||||||
|
foldToOtherRaisedStreet3=foldToOtherRaisedStreet3+%s, foldToOtherRaisedStreet4=foldToOtherRaisedStreet4+%s,
|
||||||
|
wonWhenSeenStreet1=wonWhenSeenStreet1+%s, wonAtSD=wonAtSD+%s, stealAttemptChance=stealAttemptChance+%s,
|
||||||
|
stealAttempted=stealAttempted+%s, foldBbToStealChance=foldBbToStealChance+%s,
|
||||||
|
foldedBbToSteal=foldedBbToSteal+%s,
|
||||||
|
foldSbToStealChance=foldSbToStealChance+%s, foldedSbToSteal=foldedSbToSteal+%s,
|
||||||
|
street1CBChance=street1CBChance+%s, street1CBDone=street1CBDone+%s, street2CBChance=street2CBChance+%s,
|
||||||
|
street2CBDone=street2CBDone+%s, street3CBChance=street3CBChance+%s,
|
||||||
|
street3CBDone=street3CBDone+%s, street4CBChance=street4CBChance+%s, street4CBDone=street4CBDone+%s,
|
||||||
|
foldToStreet1CBChance=foldToStreet1CBChance+%s, foldToStreet1CBDone=foldToStreet1CBDone+%s,
|
||||||
|
foldToStreet2CBChance=foldToStreet2CBChance+%s, foldToStreet2CBDone=foldToStreet2CBDone+%s,
|
||||||
|
foldToStreet3CBChance=foldToStreet3CBChance+%s,
|
||||||
|
foldToStreet3CBDone=foldToStreet3CBDone+%s, foldToStreet4CBChance=foldToStreet4CBChance+%s,
|
||||||
|
foldToStreet4CBDone=foldToStreet4CBDone+%s, totalProfit=totalProfit+%s,
|
||||||
|
street1CheckCallRaiseChance=street1CheckCallRaiseChance+%s,
|
||||||
|
street1CheckCallRaiseDone=street1CheckCallRaiseDone+%s, street2CheckCallRaiseChance=street2CheckCallRaiseChance+%s,
|
||||||
|
street2CheckCallRaiseDone=street2CheckCallRaiseDone+%s, street3CheckCallRaiseChance=street3CheckCallRaiseChance+%s,
|
||||||
|
street3CheckCallRaiseDone=street3CheckCallRaiseDone+%s, street4CheckCallRaiseChance=street4CheckCallRaiseChance+%s,
|
||||||
|
street4CheckCallRaiseDone=street4CheckCallRaiseDone+%s
|
||||||
|
WHERE gametypeId+0=%s
|
||||||
|
AND playerId=%s
|
||||||
|
AND activeSeats=%s
|
||||||
|
AND position=%s
|
||||||
|
AND tourneyTypeId+0=%s
|
||||||
|
AND styleKey=%s
|
||||||
|
""", (row[6], row[7], row[8], row[9], row[10],
|
||||||
|
row[11], row[12], row[13], row[14], row[15],
|
||||||
|
row[16], row[17], row[18], row[19], row[20],
|
||||||
|
row[21], row[22], row[23], row[24], row[25],
|
||||||
|
row[26], row[27], row[28], row[29], row[30],
|
||||||
|
row[31], row[32], row[33], row[34], row[35],
|
||||||
|
row[36], row[37], row[38], row[39], row[40],
|
||||||
|
row[41], row[42], row[43], row[44], row[45],
|
||||||
|
row[46], row[47], row[48], row[49], row[50],
|
||||||
|
row[51], row[52], row[53], row[54], row[55],
|
||||||
|
row[56], row[57], row[58], row[59], row[60],
|
||||||
|
row[1], row[2], row[3], str(row[4]), row[5], styleKey))
|
||||||
|
# Test statusmessage to see if update worked, do insert if not
|
||||||
|
#print "storehud2, upd num =", num
|
||||||
|
if ( (backend == self.PGSQL and cursor.statusmessage != "UPDATE 1")
|
||||||
|
or (backend == self.MYSQL_INNODB and num == 0) ):
|
||||||
|
#print "playerid before insert:",row[2]," num = ", num
|
||||||
|
cursor.execute("""INSERT INTO HudCache
|
||||||
|
(gametypeId, playerId, activeSeats, position, tourneyTypeId, styleKey,
|
||||||
|
HDs, street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
||||||
|
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
||||||
|
street1Aggr, street2Aggr, street3Aggr, street4Aggr, otherRaisedStreet1,
|
||||||
|
otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2,
|
||||||
|
foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, wonWhenSeenStreet1, wonAtSD, stealAttemptChance,
|
||||||
|
stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
||||||
|
street1CBChance, street1CBDone, street2CBChance, street2CBDone, street3CBChance,
|
||||||
|
street3CBDone, street4CBChance, street4CBDone, foldToStreet1CBChance, foldToStreet1CBDone,
|
||||||
|
foldToStreet2CBChance, foldToStreet2CBDone, foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance,
|
||||||
|
foldToStreet4CBDone, totalProfit, street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance,
|
||||||
|
street2CheckCallRaiseDone, street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone)
|
||||||
|
VALUES (%s, %s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s,
|
||||||
|
%s, %s, %s, %s, %s)"""
|
||||||
|
, (row[1], row[2], row[3], row[4], row[5], styleKey, row[6], row[7], row[8], row[9], row[10]
|
||||||
|
,row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20]
|
||||||
|
,row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30]
|
||||||
|
,row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40]
|
||||||
|
,row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50]
|
||||||
|
,row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60]) )
|
||||||
|
#print "hopefully inserted hud data line: ", cursor.statusmessage
|
||||||
|
# message seems to be "INSERT 0 1"
|
||||||
|
else:
|
||||||
|
#print "updated(2) hud data line"
|
||||||
|
pass
|
||||||
|
# else:
|
||||||
|
# print "todo: implement storeHudCache for stud base"
|
||||||
|
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "storeHudCache error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
#end def storeHudCache
|
||||||
|
|
||||||
|
def store_tourneys(self, tourneyTypeId, siteTourneyNo, entries, prizepool, startTime):
|
||||||
|
try:
|
||||||
|
cursor = self.get_cursor()
|
||||||
|
cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND tourneyTypeId+0=%s", (siteTourneyNo, tourneyTypeId))
|
||||||
|
tmp=cursor.fetchone()
|
||||||
|
#print "tried SELECTing tourneys.id, result:",tmp
|
||||||
|
|
||||||
|
try:
|
||||||
|
len(tmp)
|
||||||
|
except TypeError:#means we have to create new one
|
||||||
|
cursor.execute("""INSERT INTO Tourneys
|
||||||
|
(tourneyTypeId, siteTourneyNo, entries, prizepool, startTime)
|
||||||
|
VALUES (%s, %s, %s, %s, %s)""", (tourneyTypeId, siteTourneyNo, entries, prizepool, startTime))
|
||||||
|
cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND tourneyTypeId+0=%s", (siteTourneyNo, tourneyTypeId))
|
||||||
|
tmp=cursor.fetchone()
|
||||||
|
#print "created new tourneys.id:",tmp
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_tourneys error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return tmp[0]
|
||||||
|
#end def store_tourneys
|
||||||
|
|
||||||
|
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)):
|
||||||
|
cursor.execute("SELECT id FROM TourneysPlayers WHERE tourneyId=%s AND playerId+0=%s", (tourney_id, player_ids[i]))
|
||||||
|
tmp=cursor.fetchone()
|
||||||
|
#print "tried SELECTing tourneys_players.id:",tmp
|
||||||
|
|
||||||
|
try:
|
||||||
|
len(tmp)
|
||||||
|
except TypeError:
|
||||||
|
cursor.execute("""INSERT INTO TourneysPlayers
|
||||||
|
(tourneyId, playerId, payinAmount, rank, winnings) VALUES (%s, %s, %s, %s, %s)""",
|
||||||
|
(tourney_id, player_ids[i], payin_amounts[i], ranks[i], winnings[i]))
|
||||||
|
|
||||||
|
cursor.execute("SELECT id FROM TourneysPlayers WHERE tourneyId=%s AND playerId+0=%s",
|
||||||
|
(tourney_id, player_ids[i]))
|
||||||
|
tmp=cursor.fetchone()
|
||||||
|
#print "created new tourneys_players.id:",tmp
|
||||||
|
result.append(tmp[0])
|
||||||
|
except:
|
||||||
|
raise fpdb_simple.FpdbError( "store_tourneys_players error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
|
return result
|
||||||
|
#end def store_tourneys_players
|
||||||
|
|
||||||
|
|
||||||
if __name__=="__main__":
|
if __name__=="__main__":
|
||||||
c = Configuration.Config()
|
c = Configuration.Config()
|
||||||
|
|
||||||
|
|
|
@ -247,25 +247,30 @@ class fpdb_db:
|
||||||
|
|
||||||
def create_tables(self):
|
def create_tables(self):
|
||||||
#todo: should detect and fail gracefully if tables already exist.
|
#todo: should detect and fail gracefully if tables already exist.
|
||||||
logging.debug(self.sql.query['createSettingsTable'])
|
try:
|
||||||
self.cursor.execute(self.sql.query['createSettingsTable'])
|
logging.debug(self.sql.query['createSettingsTable'])
|
||||||
logging.debug(self.sql.query['createSitesTable'])
|
self.cursor.execute(self.sql.query['createSettingsTable'])
|
||||||
self.cursor.execute(self.sql.query['createSitesTable'])
|
logging.debug(self.sql.query['createSitesTable'])
|
||||||
self.cursor.execute(self.sql.query['createGametypesTable'])
|
self.cursor.execute(self.sql.query['createSitesTable'])
|
||||||
self.cursor.execute(self.sql.query['createPlayersTable'])
|
self.cursor.execute(self.sql.query['createGametypesTable'])
|
||||||
self.cursor.execute(self.sql.query['createAutoratesTable'])
|
self.cursor.execute(self.sql.query['createPlayersTable'])
|
||||||
self.cursor.execute(self.sql.query['createHandsTable'])
|
self.cursor.execute(self.sql.query['createAutoratesTable'])
|
||||||
self.cursor.execute(self.sql.query['createTourneyTypesTable'])
|
self.cursor.execute(self.sql.query['createHandsTable'])
|
||||||
self.cursor.execute(self.sql.query['createTourneysTable'])
|
self.cursor.execute(self.sql.query['createTourneyTypesTable'])
|
||||||
self.cursor.execute(self.sql.query['createTourneysPlayersTable'])
|
self.cursor.execute(self.sql.query['createTourneysTable'])
|
||||||
self.cursor.execute(self.sql.query['createHandsPlayersTable'])
|
self.cursor.execute(self.sql.query['createTourneysPlayersTable'])
|
||||||
self.cursor.execute(self.sql.query['createHandsActionsTable'])
|
self.cursor.execute(self.sql.query['createHandsPlayersTable'])
|
||||||
self.cursor.execute(self.sql.query['createHudCacheTable'])
|
#self.cursor.execute(self.sql.query['createHandsActionsTable'])
|
||||||
#self.cursor.execute(self.sql.query['addTourneyIndex'])
|
self.cursor.execute(self.sql.query['createHudCacheTable'])
|
||||||
#self.cursor.execute(self.sql.query['addHandsIndex'])
|
#self.cursor.execute(self.sql.query['addTourneyIndex'])
|
||||||
#self.cursor.execute(self.sql.query['addPlayersIndex'])
|
#self.cursor.execute(self.sql.query['addHandsIndex'])
|
||||||
self.fillDefaultData()
|
#self.cursor.execute(self.sql.query['addPlayersIndex'])
|
||||||
self.db.commit()
|
self.fillDefaultData()
|
||||||
|
self.db.commit()
|
||||||
|
except:
|
||||||
|
print "err: ", str(sys.exc_value)
|
||||||
|
self.db.rollback()
|
||||||
|
raise fpdb_simple.FpdbError( "Error creating tables " + str(sys.exc_value) )
|
||||||
#end def disconnect
|
#end def disconnect
|
||||||
|
|
||||||
def drop_tables(self):
|
def drop_tables(self):
|
||||||
|
@ -573,31 +578,38 @@ class fpdb_db:
|
||||||
#end def dropAllIndexes
|
#end def dropAllIndexes
|
||||||
|
|
||||||
def getLastInsertId(self):
|
def getLastInsertId(self):
|
||||||
if self.backend == self.MYSQL_INNODB:
|
try:
|
||||||
ret = self.db.insert_id()
|
if self.backend == self.MYSQL_INNODB:
|
||||||
if ret < 1 or ret > 999999999:
|
ret = self.db.insert_id()
|
||||||
print "getLastInsertId(): problem fetching insert_id? ret=", ret
|
if ret < 1 or ret > 999999999:
|
||||||
ret = -1
|
print "getLastInsertId(): problem fetching insert_id? ret=", ret
|
||||||
elif self.backend == self.PGSQL:
|
ret = -1
|
||||||
# some options:
|
elif self.backend == self.PGSQL:
|
||||||
# currval(hands_id_seq) - use name of implicit seq here
|
# some options:
|
||||||
# lastval() - still needs sequences set up?
|
# currval(hands_id_seq) - use name of implicit seq here
|
||||||
# insert ... returning is useful syntax (but postgres specific?)
|
# lastval() - still needs sequences set up?
|
||||||
# see rules (fancy trigger type things)
|
# insert ... returning is useful syntax (but postgres specific?)
|
||||||
self.cursor.execute ("SELECT lastval()")
|
# see rules (fancy trigger type things)
|
||||||
row = self.cursor.fetchone()
|
c = self.db.cursor()
|
||||||
if not row:
|
ret = c.execute ("SELECT lastval()")
|
||||||
print "getLastInsertId(%s): problem fetching lastval? row=" % seq, row
|
row = c.fetchone()
|
||||||
|
if not row:
|
||||||
|
print "getLastInsertId(%s): problem fetching lastval? row=" % seq, row
|
||||||
|
ret = -1
|
||||||
|
else:
|
||||||
|
ret = row[0]
|
||||||
|
elif self.backend == fpdb_db.SQLITE:
|
||||||
|
# don't know how to do this in sqlite
|
||||||
|
print "getLastInsertId(): not coded for sqlite yet"
|
||||||
ret = -1
|
ret = -1
|
||||||
else:
|
else:
|
||||||
ret = row[0]
|
print "getLastInsertId(): unknown backend ", self.backend
|
||||||
elif self.backend == fpdb_db.SQLITE:
|
ret = -1
|
||||||
# don't know how to do this in sqlite
|
except:
|
||||||
print "getLastInsertId(): not coded for sqlite yet"
|
|
||||||
ret = -1
|
|
||||||
else:
|
|
||||||
print "getLastInsertId(): unknown backend ", self.backend
|
|
||||||
ret = -1
|
ret = -1
|
||||||
|
print "getLastInsertId error:", str(sys.exc_value), " ret =", ret
|
||||||
|
raise fpdb_simple.FpdbError( "getLastInsertId error: " + str(sys.exc_value) )
|
||||||
|
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def storeHand(self, p):
|
def storeHand(self, p):
|
||||||
|
|
|
@ -19,9 +19,11 @@
|
||||||
|
|
||||||
import fpdb_simple
|
import fpdb_simple
|
||||||
import Database
|
import Database
|
||||||
|
from time import time, strftime
|
||||||
|
|
||||||
#parses a holdem hand
|
#parses a holdem hand
|
||||||
def mainParser(settings, fdb, siteID, category, hand, config, db = None):
|
def mainParser(settings, fdb, siteID, category, hand, config, db = None):
|
||||||
|
t0 = time()
|
||||||
backend = settings['db-backend']
|
backend = settings['db-backend']
|
||||||
if db == None:
|
if db == None:
|
||||||
#This is redundant - hopefully fdb will be a Database object in an iteration soon
|
#This is redundant - hopefully fdb will be a Database object in an iteration soon
|
||||||
|
@ -79,7 +81,7 @@ def mainParser(settings, fdb, siteID, category, hand, config, db = None):
|
||||||
seatLines.append(line)
|
seatLines.append(line)
|
||||||
|
|
||||||
names = fpdb_simple.parseNames(seatLines)
|
names = fpdb_simple.parseNames(seatLines)
|
||||||
playerIDs = fpdb_simple.recognisePlayerIDs(fdb.cursor, names, siteID)
|
playerIDs = fpdb_simple.recognisePlayerIDs(fdb.cursor, names, siteID) # inserts players as needed
|
||||||
tmp = fpdb_simple.parseCashesAndSeatNos(seatLines)
|
tmp = fpdb_simple.parseCashesAndSeatNos(seatLines)
|
||||||
startCashes = tmp['startCashes']
|
startCashes = tmp['startCashes']
|
||||||
seatNos = tmp['seatNos']
|
seatNos = tmp['seatNos']
|
||||||
|
@ -143,49 +145,65 @@ def mainParser(settings, fdb, siteID, category, hand, config, db = None):
|
||||||
, allIns, actionTypeByNo, winnings, totalWinnings, None
|
, allIns, actionTypeByNo, winnings, totalWinnings, None
|
||||||
, actionTypes, actionAmounts, antes)
|
, actionTypes, actionAmounts, antes)
|
||||||
|
|
||||||
if isTourney:
|
|
||||||
ranks = map(lambda x: 0, names) # create an array of 0's equal to the length of names
|
#print "parse: hand data prepared" # only reads up to here apart from inserting new players
|
||||||
payin_amounts = fpdb_simple.calcPayin(len(names), buyin, fee)
|
try:
|
||||||
|
fdb.db.commit() # need to commit new players as different db connection used
|
||||||
if base == "hold":
|
# for other writes. maybe this will change maybe not ...
|
||||||
result = db.tourney_holdem_omaha(
|
except:
|
||||||
config, settings, fdb.db, fdb.cursor, base, category, siteTourneyNo, buyin
|
print "parse: error during rollback: " + str(sys.exc_value)
|
||||||
, fee, knockout, entries, prizepool, tourneyStartTime
|
|
||||||
, payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
|
|
||||||
, gametypeID, handStartTime, names, playerIDs, startCashes
|
# Following code writes hands to database and commits (or rolls back if there is an error)
|
||||||
, positions, cardValues, cardSuits, boardValues, boardSuits
|
try:
|
||||||
, winnings, rakes, actionTypes, allIns, actionAmounts
|
if isTourney:
|
||||||
, actionNos, hudImportData, maxSeats, tableName, seatNos)
|
ranks = map(lambda x: 0, names) # create an array of 0's equal to the length of names
|
||||||
elif base == "stud":
|
payin_amounts = fpdb_simple.calcPayin(len(names), buyin, fee)
|
||||||
result = db.tourney_stud(
|
|
||||||
config, settings, fdb.db, fdb.cursor, base, category, siteTourneyNo
|
if base == "hold":
|
||||||
, buyin, fee, knockout, entries, prizepool, tourneyStartTime
|
result = db.tourney_holdem_omaha(
|
||||||
, payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
|
config, settings, base, category, siteTourneyNo, buyin
|
||||||
, gametypeID, handStartTime, names, playerIDs, startCashes
|
, fee, knockout, entries, prizepool, tourneyStartTime
|
||||||
, antes, cardValues, cardSuits, winnings, rakes, actionTypes
|
, payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
|
||||||
, allIns, actionAmounts, actionNos, hudImportData, maxSeats
|
, gametypeID, handStartTime, names, playerIDs, startCashes
|
||||||
, tableName, seatNos)
|
, positions, cardValues, cardSuits, boardValues, boardSuits
|
||||||
|
, winnings, rakes, actionTypes, allIns, actionAmounts
|
||||||
|
, actionNos, hudImportData, maxSeats, tableName, seatNos)
|
||||||
|
elif base == "stud":
|
||||||
|
result = db.tourney_stud(
|
||||||
|
config, settings, base, category, siteTourneyNo
|
||||||
|
, buyin, fee, knockout, entries, prizepool, tourneyStartTime
|
||||||
|
, payin_amounts, ranks, tourneyTypeId, siteID, siteHandNo
|
||||||
|
, gametypeID, handStartTime, names, playerIDs, startCashes
|
||||||
|
, antes, cardValues, cardSuits, winnings, rakes, actionTypes
|
||||||
|
, allIns, actionAmounts, actionNos, hudImportData, maxSeats
|
||||||
|
, tableName, seatNos)
|
||||||
|
else:
|
||||||
|
raise fpdb_simple.FpdbError("unrecognised category")
|
||||||
else:
|
else:
|
||||||
raise fpdb_simple.FpdbError("unrecognised category")
|
if base == "hold":
|
||||||
else:
|
result = db.ring_holdem_omaha(
|
||||||
if base == "hold":
|
config, settings, base, category, siteHandNo
|
||||||
result = db.ring_holdem_omaha(
|
, gametypeID, handStartTime, names, playerIDs
|
||||||
config, settings, fdb.db, fdb.cursor, base, category, siteHandNo
|
, startCashes, positions, cardValues, cardSuits
|
||||||
, gametypeID, handStartTime, names, playerIDs
|
, boardValues, boardSuits, winnings, rakes
|
||||||
, startCashes, positions, cardValues, cardSuits
|
, actionTypes, allIns, actionAmounts, actionNos
|
||||||
, boardValues, boardSuits, winnings, rakes
|
, hudImportData, maxSeats, tableName, seatNos)
|
||||||
, actionTypes, allIns, actionAmounts, actionNos
|
elif base == "stud":
|
||||||
, hudImportData, maxSeats, tableName, seatNos)
|
result = db.ring_stud(
|
||||||
elif base == "stud":
|
config, settings, base, category, siteHandNo, gametypeID
|
||||||
result = db.ring_stud(
|
, handStartTime, names, playerIDs, startCashes, antes
|
||||||
config, settings, fdb.db, fdb.cursor, base, category, siteHandNo, gametypeID
|
, cardValues, cardSuits, winnings, rakes, actionTypes, allIns
|
||||||
, handStartTime, names, playerIDs, startCashes, antes
|
, actionAmounts, actionNos, hudImportData, maxSeats, tableName
|
||||||
, cardValues, cardSuits, winnings, rakes, actionTypes, allIns
|
, seatNos)
|
||||||
, actionAmounts, actionNos, hudImportData, maxSeats, tableName
|
else:
|
||||||
, seatNos)
|
raise fpdb_simple.FpdbError ("unrecognised category")
|
||||||
else:
|
db.commit()
|
||||||
raise fpdb_simple.FpdbError ("unrecognised category")
|
except:
|
||||||
fdb.db.commit()
|
print "Error storing hand: " + str(sys.exc_value)
|
||||||
|
db.rollback()
|
||||||
|
t9 = time()
|
||||||
|
#print "parse and save=(%4.3f)" % (t9-t0)
|
||||||
return result
|
return result
|
||||||
#end def mainParser
|
#end def mainParser
|
||||||
|
|
||||||
|
|
|
@ -37,9 +37,6 @@ MYSQL_INNODB = 2
|
||||||
PGSQL = 3
|
PGSQL = 3
|
||||||
SQLITE = 4
|
SQLITE = 4
|
||||||
|
|
||||||
# config while trying out new hudcache mechanism
|
|
||||||
use_date_in_hudcache = True
|
|
||||||
|
|
||||||
class DuplicateError(Exception):
|
class DuplicateError(Exception):
|
||||||
def __init__(self, value):
|
def __init__(self, value):
|
||||||
self.value = value
|
self.value = value
|
||||||
|
@ -1122,282 +1119,6 @@ def splitRake(winnings, rakes, totalRake):
|
||||||
rakes[i]=totalRake*winPortion
|
rakes[i]=totalRake*winPortion
|
||||||
#end def splitRake
|
#end def splitRake
|
||||||
|
|
||||||
def storeActions(cursor, handsPlayersIds, actionTypes, allIns, actionAmounts, actionNos):
|
|
||||||
#stores into table hands_actions
|
|
||||||
#print "start of storeActions, actionNos:",actionNos
|
|
||||||
#print " action_amounts:",action_amounts
|
|
||||||
inserts = []
|
|
||||||
for i in xrange(len(actionTypes)): #iterate through streets
|
|
||||||
for j in xrange(len(actionTypes[i])): #iterate through names
|
|
||||||
for k in xrange(len(actionTypes[i][j])): #iterate through individual actions of that player on that street
|
|
||||||
# Add inserts into a list and let
|
|
||||||
inserts = inserts + [(handsPlayersIds[j], i, actionNos[i][j][k], actionTypes[i][j][k], allIns[i][j][k], actionAmounts[i][j][k])]
|
|
||||||
|
|
||||||
cursor.executemany("INSERT INTO HandsActions (handsPlayerId, street, actionNo, action, allIn, amount) VALUES (%s, %s, %s, %s, %s, %s)", inserts)
|
|
||||||
#end def storeActions
|
|
||||||
|
|
||||||
def storeHands(backend, conn, cursor, site_hand_no, gametype_id
|
|
||||||
,hand_start_time, names, tableName, maxSeats, hudCache,
|
|
||||||
board_values, board_suits):
|
|
||||||
cards = [Card.cardFromValueSuit(v,s) for v,s in zip(board_values,board_suits)]
|
|
||||||
#stores into table hands:
|
|
||||||
cursor.execute ("""INSERT INTO Hands
|
|
||||||
(siteHandNo, gametypeId, handStart, seats, tableName, importTime, maxSeats
|
|
||||||
,boardcard1,boardcard2,boardcard3,boardcard4,boardcard5
|
|
||||||
,playersVpi, playersAtStreet1, playersAtStreet2
|
|
||||||
,playersAtStreet3, playersAtStreet4, playersAtShowdown
|
|
||||||
,street0Raises, street1Raises, street2Raises
|
|
||||||
,street3Raises, street4Raises, street1Pot
|
|
||||||
,street2Pot, street3Pot, street4Pot
|
|
||||||
,showdownPot
|
|
||||||
)
|
|
||||||
VALUES
|
|
||||||
(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
|
||||||
"""
|
|
||||||
, (site_hand_no, gametype_id, hand_start_time, len(names), tableName, datetime.datetime.today(), maxSeats
|
|
||||||
,cards[0], cards[1], cards[2], cards[3], cards[4]
|
|
||||||
,hudCache['playersVpi'], hudCache['playersAtStreet1'], hudCache['playersAtStreet2']
|
|
||||||
,hudCache['playersAtStreet3'], hudCache['playersAtStreet4'], hudCache['playersAtShowdown']
|
|
||||||
,hudCache['street0Raises'], hudCache['street1Raises'], hudCache['street2Raises']
|
|
||||||
,hudCache['street3Raises'], hudCache['street4Raises'], hudCache['street1Pot']
|
|
||||||
,hudCache['street2Pot'], hudCache['street3Pot'], hudCache['street4Pot']
|
|
||||||
,hudCache['showdownPot']
|
|
||||||
))
|
|
||||||
return getLastInsertId(backend, conn, cursor)
|
|
||||||
#end def storeHands
|
|
||||||
|
|
||||||
def store_hands_players_holdem_omaha(backend, conn, cursor, category, hands_id, player_ids, start_cashes
|
|
||||||
,positions, card_values, card_suits, winnings, rakes, seatNos, hudCache):
|
|
||||||
result=[]
|
|
||||||
|
|
||||||
# postgres (and others?) needs the booleans converted to ints before saving:
|
|
||||||
# (or we could just save them as boolean ... but then we can't sum them so easily in sql ???)
|
|
||||||
# NO - storing booleans for now so don't need this
|
|
||||||
#hudCacheInt = {}
|
|
||||||
#for k,v in hudCache.iteritems():
|
|
||||||
# if k in ('wonWhenSeenStreet1', 'wonAtSD', 'totalProfit'):
|
|
||||||
# hudCacheInt[k] = v
|
|
||||||
# else:
|
|
||||||
# hudCacheInt[k] = map(lambda x: 1 if x else 0, v)
|
|
||||||
|
|
||||||
if (category=="holdem"):
|
|
||||||
for i in xrange(len(player_ids)):
|
|
||||||
startCards = Card.twoStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1])
|
|
||||||
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
|
||||||
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
|
||||||
cursor.execute ("""
|
|
||||||
INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, position, tourneyTypeId,
|
|
||||||
card1, card2, startCards, winnings, rake, seatNo, totalProfit,
|
|
||||||
street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
|
||||||
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
|
||||||
street1Aggr, street2Aggr, street3Aggr, street4Aggr,
|
|
||||||
otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4,
|
|
||||||
foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4,
|
|
||||||
wonWhenSeenStreet1, wonAtSD,
|
|
||||||
stealAttemptChance, stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
|
||||||
street1CBChance, street1CBDone, street2CBChance, street2CBDone,
|
|
||||||
street3CBChance, street3CBDone, street4CBChance, street4CBDone,
|
|
||||||
foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone,
|
|
||||||
foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone,
|
|
||||||
street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone,
|
|
||||||
street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone,
|
|
||||||
street0Calls, street1Calls, street2Calls, street3Calls, street4Calls,
|
|
||||||
street0Bets, street1Bets, street2Bets, street3Bets, street4Bets
|
|
||||||
)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], positions[i], 1, # tourneytypeid
|
|
||||||
card1, card2, startCards,
|
|
||||||
winnings[i], rakes[i], seatNos[i], hudCache['totalProfit'][i],
|
|
||||||
hudCache['street0VPI'][i], hudCache['street0Aggr'][i],
|
|
||||||
hudCache['street0_3BChance'][i], hudCache['street0_3BDone'][i],
|
|
||||||
hudCache['street1Seen'][i], hudCache['street2Seen'][i], hudCache['street3Seen'][i],
|
|
||||||
hudCache['street4Seen'][i], hudCache['sawShowdown'][i],
|
|
||||||
hudCache['street1Aggr'][i], hudCache['street2Aggr'][i], hudCache['street3Aggr'][i], hudCache['street4Aggr'][i],
|
|
||||||
hudCache['otherRaisedStreet1'][i], hudCache['otherRaisedStreet2'][i],
|
|
||||||
hudCache['otherRaisedStreet3'][i], hudCache['otherRaisedStreet4'][i],
|
|
||||||
hudCache['foldToOtherRaisedStreet1'][i], hudCache['foldToOtherRaisedStreet2'][i],
|
|
||||||
hudCache['foldToOtherRaisedStreet3'][i], hudCache['foldToOtherRaisedStreet4'][i],
|
|
||||||
hudCache['wonWhenSeenStreet1'][i], hudCache['wonAtSD'][i],
|
|
||||||
hudCache['stealAttemptChance'][i], hudCache['stealAttempted'][i], hudCache['foldBbToStealChance'][i],
|
|
||||||
hudCache['foldedBbToSteal'][i], hudCache['foldSbToStealChance'][i], hudCache['foldedSbToSteal'][i],
|
|
||||||
hudCache['street1CBChance'][i], hudCache['street1CBDone'][i], hudCache['street2CBChance'][i], hudCache['street2CBDone'][i],
|
|
||||||
hudCache['street3CBChance'][i], hudCache['street3CBDone'][i], hudCache['street4CBChance'][i], hudCache['street4CBDone'][i],
|
|
||||||
hudCache['foldToStreet1CBChance'][i], hudCache['foldToStreet1CBDone'][i],
|
|
||||||
hudCache['foldToStreet2CBChance'][i], hudCache['foldToStreet2CBDone'][i],
|
|
||||||
hudCache['foldToStreet3CBChance'][i], hudCache['foldToStreet3CBDone'][i],
|
|
||||||
hudCache['foldToStreet4CBChance'][i], hudCache['foldToStreet4CBDone'][i],
|
|
||||||
hudCache['street1CheckCallRaiseChance'][i], hudCache['street1CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street2CheckCallRaiseChance'][i], hudCache['street2CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street3CheckCallRaiseChance'][i], hudCache['street3CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street4CheckCallRaiseChance'][i], hudCache['street4CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street0Calls'][i], hudCache['street1Calls'][i], hudCache['street2Calls'][i], hudCache['street3Calls'][i], hudCache['street4Calls'][i],
|
|
||||||
hudCache['street0Bets'][i], hudCache['street1Bets'][i], hudCache['street2Bets'][i], hudCache['street3Bets'][i], hudCache['street4Bets'][i]
|
|
||||||
) )
|
|
||||||
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId=%s", (hands_id, player_ids[i]))
|
|
||||||
#result.append(cursor.fetchall()[0][0])
|
|
||||||
result.append( getLastInsertId(backend, conn, cursor) )
|
|
||||||
elif (category=="omahahi" or category=="omahahilo"):
|
|
||||||
for i in xrange(len(player_ids)):
|
|
||||||
startCards = Card.fourStartCards(card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1], card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3])
|
|
||||||
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
|
||||||
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
|
||||||
card3 = Card.cardFromValueSuit(card_values[i][2], card_suits[i][2])
|
|
||||||
card4 = Card.cardFromValueSuit(card_values[i][3], card_suits[i][3])
|
|
||||||
cursor.execute ("""INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, position, tourneyTypeId,
|
|
||||||
card1, card2, card3, card4, winnings, rake, seatNo, totalProfit,
|
|
||||||
street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
|
||||||
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
|
||||||
street1Aggr, street2Aggr, street3Aggr, street4Aggr,
|
|
||||||
otherRaisedStreet1, otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4,
|
|
||||||
foldToOtherRaisedStreet1, foldToOtherRaisedStreet2, foldToOtherRaisedStreet3, foldToOtherRaisedStreet4,
|
|
||||||
wonWhenSeenStreet1, wonAtSD,
|
|
||||||
stealAttemptChance, stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
|
||||||
street1CBChance, street1CBDone, street2CBChance, street2CBDone,
|
|
||||||
street3CBChance, street3CBDone, street4CBChance, street4CBDone,
|
|
||||||
foldToStreet1CBChance, foldToStreet1CBDone, foldToStreet2CBChance, foldToStreet2CBDone,
|
|
||||||
foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance, foldToStreet4CBDone,
|
|
||||||
street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance, street2CheckCallRaiseDone,
|
|
||||||
street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone,
|
|
||||||
street0Calls, street1Calls, street2Calls, street3Calls, street4Calls,
|
|
||||||
street0Bets, street1Bets, street2Bets, street3Bets, street4Bets
|
|
||||||
)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], positions[i], 1, # tourneytypeid
|
|
||||||
card1, card2, card3, card4,
|
|
||||||
winnings[i], rakes[i], seatNos[i], hudCache['totalProfit'][i],
|
|
||||||
hudCache['street0VPI'][i], hudCache['street0Aggr'][i],
|
|
||||||
hudCache['street0_3BChance'][i], hudCache['street0_3BDone'][i],
|
|
||||||
hudCache['street1Seen'][i], hudCache['street2Seen'][i], hudCache['street3Seen'][i],
|
|
||||||
hudCache['street4Seen'][i], hudCache['sawShowdown'][i],
|
|
||||||
hudCache['street1Aggr'][i], hudCache['street2Aggr'][i], hudCache['street3Aggr'][i], hudCache['street4Aggr'][i],
|
|
||||||
hudCache['otherRaisedStreet1'][i], hudCache['otherRaisedStreet2'][i],
|
|
||||||
hudCache['otherRaisedStreet3'][i], hudCache['otherRaisedStreet4'][i],
|
|
||||||
hudCache['foldToOtherRaisedStreet1'][i], hudCache['foldToOtherRaisedStreet2'][i],
|
|
||||||
hudCache['foldToOtherRaisedStreet3'][i], hudCache['foldToOtherRaisedStreet4'][i],
|
|
||||||
hudCache['wonWhenSeenStreet1'][i], hudCache['wonAtSD'][i],
|
|
||||||
hudCache['stealAttemptChance'][i], hudCache['stealAttempted'][i], hudCache['foldBbToStealChance'][i],
|
|
||||||
hudCache['foldedBbToSteal'][i], hudCache['foldSbToStealChance'][i], hudCache['foldedSbToSteal'][i],
|
|
||||||
hudCache['street1CBChance'][i], hudCache['street1CBDone'][i], hudCache['street2CBChance'][i], hudCache['street2CBDone'][i],
|
|
||||||
hudCache['street3CBChance'][i], hudCache['street3CBDone'][i], hudCache['street4CBChance'][i], hudCache['street4CBDone'][i],
|
|
||||||
hudCache['foldToStreet1CBChance'][i], hudCache['foldToStreet1CBDone'][i],
|
|
||||||
hudCache['foldToStreet2CBChance'][i], hudCache['foldToStreet2CBDone'][i],
|
|
||||||
hudCache['foldToStreet3CBChance'][i], hudCache['foldToStreet3CBDone'][i],
|
|
||||||
hudCache['foldToStreet4CBChance'][i], hudCache['foldToStreet4CBDone'][i],
|
|
||||||
hudCache['street1CheckCallRaiseChance'][i], hudCache['street1CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street2CheckCallRaiseChance'][i], hudCache['street2CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street3CheckCallRaiseChance'][i], hudCache['street3CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street4CheckCallRaiseChance'][i], hudCache['street4CheckCallRaiseDone'][i],
|
|
||||||
hudCache['street0Calls'][i], hudCache['street1Calls'][i], hudCache['street2Calls'][i], hudCache['street3Calls'][i], hudCache['street4Calls'][i],
|
|
||||||
hudCache['street0Bets'][i], hudCache['street1Bets'][i], hudCache['street2Bets'][i], hudCache['street3Bets'][i], hudCache['street4Bets'][i]
|
|
||||||
) )
|
|
||||||
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
|
||||||
#result.append(cursor.fetchall()[0][0])
|
|
||||||
result.append( getLastInsertId(backend, conn, cursor) )
|
|
||||||
else:
|
|
||||||
raise FpdbError("invalid category")
|
|
||||||
return result
|
|
||||||
#end def store_hands_players_holdem_omaha
|
|
||||||
|
|
||||||
def store_hands_players_stud(backend, conn, cursor, hands_id, player_ids, start_cashes, antes,
|
|
||||||
card_values, card_suits, winnings, rakes, seatNos):
|
|
||||||
#stores hands_players rows for stud/razz games. returns an array of the resulting IDs
|
|
||||||
result=[]
|
|
||||||
#print "before inserts in store_hands_players_stud, antes:", antes
|
|
||||||
for i in xrange(len(player_ids)):
|
|
||||||
card1 = Card.cardFromValueSuit(card_values[i][0], card_suits[i][0])
|
|
||||||
card2 = Card.cardFromValueSuit(card_values[i][1], card_suits[i][1])
|
|
||||||
card3 = Card.cardFromValueSuit(card_values[i][2], card_suits[i][2])
|
|
||||||
card4 = Card.cardFromValueSuit(card_values[i][3], card_suits[i][3])
|
|
||||||
card5 = Card.cardFromValueSuit(card_values[i][4], card_suits[i][4])
|
|
||||||
card6 = Card.cardFromValueSuit(card_values[i][5], card_suits[i][5])
|
|
||||||
card7 = Card.cardFromValueSuit(card_values[i][6], card_suits[i][6])
|
|
||||||
|
|
||||||
cursor.execute ("""INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, ante, tourneyTypeId,
|
|
||||||
card1, card2,
|
|
||||||
card3, card4,
|
|
||||||
card5, card6,
|
|
||||||
card7, winnings, rake, seatNo)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], antes[i], 1,
|
|
||||||
card1, card2,
|
|
||||||
card3, card4,
|
|
||||||
card5, card6,
|
|
||||||
card7, winnings[i], rakes[i], seatNos[i]))
|
|
||||||
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
|
||||||
#result.append(cursor.fetchall()[0][0])
|
|
||||||
result.append( getLastInsertId(backend, conn, cursor) )
|
|
||||||
return result
|
|
||||||
#end def store_hands_players_stud
|
|
||||||
|
|
||||||
def store_hands_players_holdem_omaha_tourney(backend, conn, cursor, category, hands_id, player_ids
|
|
||||||
,start_cashes, positions, card_values, card_suits
|
|
||||||
, winnings, rakes, seatNos, tourneys_players_ids):
|
|
||||||
#stores hands_players for tourney holdem/omaha hands
|
|
||||||
result=[]
|
|
||||||
for i in xrange(len(player_ids)):
|
|
||||||
if len(card_values[0])==2:
|
|
||||||
cursor.execute ("""INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, position,
|
|
||||||
card1Value, card1Suit, card2Value, card2Suit,
|
|
||||||
winnings, rake, tourneysPlayersId, seatNo)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], positions[i],
|
|
||||||
card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
|
|
||||||
winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
|
|
||||||
elif len(card_values[0])==4:
|
|
||||||
cursor.execute ("""INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, position,
|
|
||||||
card1Value, card1Suit, card2Value, card2Suit,
|
|
||||||
card3Value, card3Suit, card4Value, card4Suit,
|
|
||||||
winnings, rake, tourneysPlayersId, seatNo)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], positions[i],
|
|
||||||
card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
|
|
||||||
card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
|
|
||||||
winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
|
|
||||||
else:
|
|
||||||
raise FpdbError ("invalid card_values length:"+str(len(card_values[0])))
|
|
||||||
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
|
||||||
#result.append(cursor.fetchall()[0][0])
|
|
||||||
result.append( getLastInsertId(backend, conn, cursor) )
|
|
||||||
|
|
||||||
return result
|
|
||||||
#end def store_hands_players_holdem_omaha_tourney
|
|
||||||
|
|
||||||
def store_hands_players_stud_tourney(backend, conn, cursor, hands_id, player_ids, start_cashes,
|
|
||||||
antes, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids):
|
|
||||||
#stores hands_players for tourney stud/razz hands
|
|
||||||
result=[]
|
|
||||||
for i in xrange(len(player_ids)):
|
|
||||||
cursor.execute ("""INSERT INTO HandsPlayers
|
|
||||||
(handId, playerId, startCash, ante,
|
|
||||||
card1Value, card1Suit, card2Value, card2Suit,
|
|
||||||
card3Value, card3Suit, card4Value, card4Suit,
|
|
||||||
card5Value, card5Suit, card6Value, card6Suit,
|
|
||||||
card7Value, card7Suit, winnings, rake, tourneysPlayersId, seatNo)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s, %s)""",
|
|
||||||
(hands_id, player_ids[i], start_cashes[i], antes[i],
|
|
||||||
card_values[i][0], card_suits[i][0], card_values[i][1], card_suits[i][1],
|
|
||||||
card_values[i][2], card_suits[i][2], card_values[i][3], card_suits[i][3],
|
|
||||||
card_values[i][4], card_suits[i][4], card_values[i][5], card_suits[i][5],
|
|
||||||
card_values[i][6], card_suits[i][6], winnings[i], rakes[i], tourneys_players_ids[i], seatNos[i]))
|
|
||||||
#cursor.execute("SELECT id FROM HandsPlayers WHERE handId=%s AND playerId+0=%s", (hands_id, player_ids[i]))
|
|
||||||
#result.append(cursor.fetchall()[0][0])
|
|
||||||
result.append( getLastInsertId(backend, conn, cursor) )
|
|
||||||
return result
|
|
||||||
#end def store_hands_players_stud_tourney
|
|
||||||
|
|
||||||
def generateHudCacheData(player_ids, base, category, action_types, allIns, actionTypeByNo
|
def generateHudCacheData(player_ids, base, category, action_types, allIns, actionTypeByNo
|
||||||
,winnings, totalWinnings, positions, actionTypes, actionAmounts, antes):
|
,winnings, totalWinnings, positions, actionTypes, actionAmounts, antes):
|
||||||
"""calculates data for the HUD during import. IMPORTANT: if you change this method make
|
"""calculates data for the HUD during import. IMPORTANT: if you change this method make
|
||||||
|
@ -2105,230 +1826,3 @@ def generateFoldToCB(street, playerIDs, didStreetCB, streetCBDone, foldToStreetC
|
||||||
if action[1]=="fold":
|
if action[1]=="fold":
|
||||||
foldToStreetCBDone[player]=True
|
foldToStreetCBDone[player]=True
|
||||||
#end def generateFoldToCB
|
#end def generateFoldToCB
|
||||||
|
|
||||||
def storeHudCache(backend, cursor, base, category, gametypeId, hand_start_time, playerIds, hudImportData):
|
|
||||||
"""Modified version aiming for more speed ..."""
|
|
||||||
# if (category=="holdem" or category=="omahahi" or category=="omahahilo"):
|
|
||||||
if use_date_in_hudcache:
|
|
||||||
#print "key =", "d%02d%02d%02d " % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
|
|
||||||
styleKey = "d%02d%02d%02d" % (hand_start_time.year-2000, hand_start_time.month, hand_start_time.day)
|
|
||||||
else:
|
|
||||||
# hard-code styleKey as 'A000000' (all-time cache, no key) for now
|
|
||||||
styleKey = 'A000000'
|
|
||||||
|
|
||||||
#print "storeHudCache2, len(playerIds)=", len(playerIds), " len(vpip)=" \
|
|
||||||
#, len(hudImportData['street0VPI']), " len(totprof)=", len(hudImportData['totalProfit'])
|
|
||||||
for player in xrange(len(playerIds)):
|
|
||||||
|
|
||||||
# Set up a clean row
|
|
||||||
row=[]
|
|
||||||
row.append(0)#blank for id
|
|
||||||
row.append(gametypeId)
|
|
||||||
row.append(playerIds[player])
|
|
||||||
row.append(len(playerIds))#seats
|
|
||||||
for i in xrange(len(hudImportData)+2):
|
|
||||||
row.append(0)
|
|
||||||
|
|
||||||
if base=="hold":
|
|
||||||
row[4]=hudImportData['position'][player]
|
|
||||||
else:
|
|
||||||
row[4]=0
|
|
||||||
row[5]=1 #tourneysGametypeId
|
|
||||||
row[6]+=1 #HDs
|
|
||||||
if hudImportData['street0VPI'][player]: row[7]+=1
|
|
||||||
if hudImportData['street0Aggr'][player]: row[8]+=1
|
|
||||||
if hudImportData['street0_3BChance'][player]: row[9]+=1
|
|
||||||
if hudImportData['street0_3BDone'][player]: row[10]+=1
|
|
||||||
if hudImportData['street1Seen'][player]: row[11]+=1
|
|
||||||
if hudImportData['street2Seen'][player]: row[12]+=1
|
|
||||||
if hudImportData['street3Seen'][player]: row[13]+=1
|
|
||||||
if hudImportData['street4Seen'][player]: row[14]+=1
|
|
||||||
if hudImportData['sawShowdown'][player]: row[15]+=1
|
|
||||||
if hudImportData['street1Aggr'][player]: row[16]+=1
|
|
||||||
if hudImportData['street2Aggr'][player]: row[17]+=1
|
|
||||||
if hudImportData['street3Aggr'][player]: row[18]+=1
|
|
||||||
if hudImportData['street4Aggr'][player]: row[19]+=1
|
|
||||||
if hudImportData['otherRaisedStreet1'][player]: row[20]+=1
|
|
||||||
if hudImportData['otherRaisedStreet2'][player]: row[21]+=1
|
|
||||||
if hudImportData['otherRaisedStreet3'][player]: row[22]+=1
|
|
||||||
if hudImportData['otherRaisedStreet4'][player]: row[23]+=1
|
|
||||||
if hudImportData['foldToOtherRaisedStreet1'][player]: row[24]+=1
|
|
||||||
if hudImportData['foldToOtherRaisedStreet2'][player]: row[25]+=1
|
|
||||||
if hudImportData['foldToOtherRaisedStreet3'][player]: row[26]+=1
|
|
||||||
if hudImportData['foldToOtherRaisedStreet4'][player]: row[27]+=1
|
|
||||||
if hudImportData['wonWhenSeenStreet1'][player]!=0.0: row[28]+=hudImportData['wonWhenSeenStreet1'][player]
|
|
||||||
if hudImportData['wonAtSD'][player]!=0.0: row[29]+=hudImportData['wonAtSD'][player]
|
|
||||||
if hudImportData['stealAttemptChance'][player]: row[30]+=1
|
|
||||||
if hudImportData['stealAttempted'][player]: row[31]+=1
|
|
||||||
if hudImportData['foldBbToStealChance'][player]: row[32]+=1
|
|
||||||
if hudImportData['foldedBbToSteal'][player]: row[33]+=1
|
|
||||||
if hudImportData['foldSbToStealChance'][player]: row[34]+=1
|
|
||||||
if hudImportData['foldedSbToSteal'][player]: row[35]+=1
|
|
||||||
|
|
||||||
if hudImportData['street1CBChance'][player]: row[36]+=1
|
|
||||||
if hudImportData['street1CBDone'][player]: row[37]+=1
|
|
||||||
if hudImportData['street2CBChance'][player]: row[38]+=1
|
|
||||||
if hudImportData['street2CBDone'][player]: row[39]+=1
|
|
||||||
if hudImportData['street3CBChance'][player]: row[40]+=1
|
|
||||||
if hudImportData['street3CBDone'][player]: row[41]+=1
|
|
||||||
if hudImportData['street4CBChance'][player]: row[42]+=1
|
|
||||||
if hudImportData['street4CBDone'][player]: row[43]+=1
|
|
||||||
|
|
||||||
if hudImportData['foldToStreet1CBChance'][player]: row[44]+=1
|
|
||||||
if hudImportData['foldToStreet1CBDone'][player]: row[45]+=1
|
|
||||||
if hudImportData['foldToStreet2CBChance'][player]: row[46]+=1
|
|
||||||
if hudImportData['foldToStreet2CBDone'][player]: row[47]+=1
|
|
||||||
if hudImportData['foldToStreet3CBChance'][player]: row[48]+=1
|
|
||||||
if hudImportData['foldToStreet3CBDone'][player]: row[49]+=1
|
|
||||||
if hudImportData['foldToStreet4CBChance'][player]: row[50]+=1
|
|
||||||
if hudImportData['foldToStreet4CBDone'][player]: row[51]+=1
|
|
||||||
|
|
||||||
#print "player=", player
|
|
||||||
#print "len(totalProfit)=", len(hudImportData['totalProfit'])
|
|
||||||
if hudImportData['totalProfit'][player]:
|
|
||||||
row[52]+=hudImportData['totalProfit'][player]
|
|
||||||
|
|
||||||
if hudImportData['street1CheckCallRaiseChance'][player]: row[53]+=1
|
|
||||||
if hudImportData['street1CheckCallRaiseDone'][player]: row[54]+=1
|
|
||||||
if hudImportData['street2CheckCallRaiseChance'][player]: row[55]+=1
|
|
||||||
if hudImportData['street2CheckCallRaiseDone'][player]: row[56]+=1
|
|
||||||
if hudImportData['street3CheckCallRaiseChance'][player]: row[57]+=1
|
|
||||||
if hudImportData['street3CheckCallRaiseDone'][player]: row[58]+=1
|
|
||||||
if hudImportData['street4CheckCallRaiseChance'][player]: row[59]+=1
|
|
||||||
if hudImportData['street4CheckCallRaiseDone'][player]: row[60]+=1
|
|
||||||
|
|
||||||
# Try to do the update first:
|
|
||||||
num = cursor.execute("""UPDATE HudCache
|
|
||||||
SET HDs=HDs+%s, street0VPI=street0VPI+%s, street0Aggr=street0Aggr+%s,
|
|
||||||
street0_3BChance=street0_3BChance+%s, street0_3BDone=street0_3BDone+%s,
|
|
||||||
street1Seen=street1Seen+%s, street2Seen=street2Seen+%s, street3Seen=street3Seen+%s,
|
|
||||||
street4Seen=street4Seen+%s, sawShowdown=sawShowdown+%s,
|
|
||||||
street1Aggr=street1Aggr+%s, street2Aggr=street2Aggr+%s, street3Aggr=street3Aggr+%s,
|
|
||||||
street4Aggr=street4Aggr+%s, otherRaisedStreet1=otherRaisedStreet1+%s,
|
|
||||||
otherRaisedStreet2=otherRaisedStreet2+%s, otherRaisedStreet3=otherRaisedStreet3+%s,
|
|
||||||
otherRaisedStreet4=otherRaisedStreet4+%s,
|
|
||||||
foldToOtherRaisedStreet1=foldToOtherRaisedStreet1+%s, foldToOtherRaisedStreet2=foldToOtherRaisedStreet2+%s,
|
|
||||||
foldToOtherRaisedStreet3=foldToOtherRaisedStreet3+%s, foldToOtherRaisedStreet4=foldToOtherRaisedStreet4+%s,
|
|
||||||
wonWhenSeenStreet1=wonWhenSeenStreet1+%s, wonAtSD=wonAtSD+%s, stealAttemptChance=stealAttemptChance+%s,
|
|
||||||
stealAttempted=stealAttempted+%s, foldBbToStealChance=foldBbToStealChance+%s,
|
|
||||||
foldedBbToSteal=foldedBbToSteal+%s,
|
|
||||||
foldSbToStealChance=foldSbToStealChance+%s, foldedSbToSteal=foldedSbToSteal+%s,
|
|
||||||
street1CBChance=street1CBChance+%s, street1CBDone=street1CBDone+%s, street2CBChance=street2CBChance+%s,
|
|
||||||
street2CBDone=street2CBDone+%s, street3CBChance=street3CBChance+%s,
|
|
||||||
street3CBDone=street3CBDone+%s, street4CBChance=street4CBChance+%s, street4CBDone=street4CBDone+%s,
|
|
||||||
foldToStreet1CBChance=foldToStreet1CBChance+%s, foldToStreet1CBDone=foldToStreet1CBDone+%s,
|
|
||||||
foldToStreet2CBChance=foldToStreet2CBChance+%s, foldToStreet2CBDone=foldToStreet2CBDone+%s,
|
|
||||||
foldToStreet3CBChance=foldToStreet3CBChance+%s,
|
|
||||||
foldToStreet3CBDone=foldToStreet3CBDone+%s, foldToStreet4CBChance=foldToStreet4CBChance+%s,
|
|
||||||
foldToStreet4CBDone=foldToStreet4CBDone+%s, totalProfit=totalProfit+%s,
|
|
||||||
street1CheckCallRaiseChance=street1CheckCallRaiseChance+%s,
|
|
||||||
street1CheckCallRaiseDone=street1CheckCallRaiseDone+%s, street2CheckCallRaiseChance=street2CheckCallRaiseChance+%s,
|
|
||||||
street2CheckCallRaiseDone=street2CheckCallRaiseDone+%s, street3CheckCallRaiseChance=street3CheckCallRaiseChance+%s,
|
|
||||||
street3CheckCallRaiseDone=street3CheckCallRaiseDone+%s, street4CheckCallRaiseChance=street4CheckCallRaiseChance+%s,
|
|
||||||
street4CheckCallRaiseDone=street4CheckCallRaiseDone+%s
|
|
||||||
WHERE gametypeId+0=%s
|
|
||||||
AND playerId=%s
|
|
||||||
AND activeSeats=%s
|
|
||||||
AND position=%s
|
|
||||||
AND tourneyTypeId+0=%s
|
|
||||||
AND styleKey=%s
|
|
||||||
""", (row[6], row[7], row[8], row[9], row[10],
|
|
||||||
row[11], row[12], row[13], row[14], row[15],
|
|
||||||
row[16], row[17], row[18], row[19], row[20],
|
|
||||||
row[21], row[22], row[23], row[24], row[25],
|
|
||||||
row[26], row[27], row[28], row[29], row[30],
|
|
||||||
row[31], row[32], row[33], row[34], row[35],
|
|
||||||
row[36], row[37], row[38], row[39], row[40],
|
|
||||||
row[41], row[42], row[43], row[44], row[45],
|
|
||||||
row[46], row[47], row[48], row[49], row[50],
|
|
||||||
row[51], row[52], row[53], row[54], row[55],
|
|
||||||
row[56], row[57], row[58], row[59], row[60],
|
|
||||||
row[1], row[2], row[3], str(row[4]), row[5], styleKey))
|
|
||||||
# Test statusmessage to see if update worked, do insert if not
|
|
||||||
#print "storehud2, upd num =", num
|
|
||||||
if ( (backend == PGSQL and cursor.statusmessage != "UPDATE 1")
|
|
||||||
or (backend == MYSQL_INNODB and num == 0) ):
|
|
||||||
#print "playerid before insert:",row[2]," num = ", num
|
|
||||||
cursor.execute("""INSERT INTO HudCache
|
|
||||||
(gametypeId, playerId, activeSeats, position, tourneyTypeId, styleKey,
|
|
||||||
HDs, street0VPI, street0Aggr, street0_3BChance, street0_3BDone,
|
|
||||||
street1Seen, street2Seen, street3Seen, street4Seen, sawShowdown,
|
|
||||||
street1Aggr, street2Aggr, street3Aggr, street4Aggr, otherRaisedStreet1,
|
|
||||||
otherRaisedStreet2, otherRaisedStreet3, otherRaisedStreet4, foldToOtherRaisedStreet1, foldToOtherRaisedStreet2,
|
|
||||||
foldToOtherRaisedStreet3, foldToOtherRaisedStreet4, wonWhenSeenStreet1, wonAtSD, stealAttemptChance,
|
|
||||||
stealAttempted, foldBbToStealChance, foldedBbToSteal, foldSbToStealChance, foldedSbToSteal,
|
|
||||||
street1CBChance, street1CBDone, street2CBChance, street2CBDone, street3CBChance,
|
|
||||||
street3CBDone, street4CBChance, street4CBDone, foldToStreet1CBChance, foldToStreet1CBDone,
|
|
||||||
foldToStreet2CBChance, foldToStreet2CBDone, foldToStreet3CBChance, foldToStreet3CBDone, foldToStreet4CBChance,
|
|
||||||
foldToStreet4CBDone, totalProfit, street1CheckCallRaiseChance, street1CheckCallRaiseDone, street2CheckCallRaiseChance,
|
|
||||||
street2CheckCallRaiseDone, street3CheckCallRaiseChance, street3CheckCallRaiseDone, street4CheckCallRaiseChance, street4CheckCallRaiseDone)
|
|
||||||
VALUES (%s, %s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s,
|
|
||||||
%s, %s, %s, %s, %s)"""
|
|
||||||
, (row[1], row[2], row[3], row[4], row[5], styleKey, row[6], row[7], row[8], row[9], row[10]
|
|
||||||
,row[11], row[12], row[13], row[14], row[15], row[16], row[17], row[18], row[19], row[20]
|
|
||||||
,row[21], row[22], row[23], row[24], row[25], row[26], row[27], row[28], row[29], row[30]
|
|
||||||
,row[31], row[32], row[33], row[34], row[35], row[36], row[37], row[38], row[39], row[40]
|
|
||||||
,row[41], row[42], row[43], row[44], row[45], row[46], row[47], row[48], row[49], row[50]
|
|
||||||
,row[51], row[52], row[53], row[54], row[55], row[56], row[57], row[58], row[59], row[60]) )
|
|
||||||
#print "hopefully inserted hud data line: ", cursor.statusmessage
|
|
||||||
# message seems to be "INSERT 0 1"
|
|
||||||
else:
|
|
||||||
#print "updated(2) hud data line"
|
|
||||||
pass
|
|
||||||
# else:
|
|
||||||
# print "todo: implement storeHudCache for stud base"
|
|
||||||
#end def storeHudCache2
|
|
||||||
|
|
||||||
def store_tourneys(cursor, tourneyTypeId, siteTourneyNo, entries, prizepool, startTime):
|
|
||||||
cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND tourneyTypeId+0=%s", (siteTourneyNo, tourneyTypeId))
|
|
||||||
tmp=cursor.fetchone()
|
|
||||||
#print "tried SELECTing tourneys.id, result:",tmp
|
|
||||||
|
|
||||||
try:
|
|
||||||
len(tmp)
|
|
||||||
except TypeError:#means we have to create new one
|
|
||||||
cursor.execute("""INSERT INTO Tourneys
|
|
||||||
(tourneyTypeId, siteTourneyNo, entries, prizepool, startTime)
|
|
||||||
VALUES (%s, %s, %s, %s, %s)""", (tourneyTypeId, siteTourneyNo, entries, prizepool, startTime))
|
|
||||||
cursor.execute("SELECT id FROM Tourneys WHERE siteTourneyNo=%s AND tourneyTypeId+0=%s", (siteTourneyNo, tourneyTypeId))
|
|
||||||
tmp=cursor.fetchone()
|
|
||||||
#print "created new tourneys.id:",tmp
|
|
||||||
return tmp[0]
|
|
||||||
#end def store_tourneys
|
|
||||||
|
|
||||||
def store_tourneys_players(cursor, tourney_id, player_ids, payin_amounts, ranks, winnings):
|
|
||||||
result=[]
|
|
||||||
#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)):
|
|
||||||
cursor.execute("SELECT id FROM TourneysPlayers WHERE tourneyId=%s AND playerId+0=%s", (tourney_id, player_ids[i]))
|
|
||||||
tmp=cursor.fetchone()
|
|
||||||
#print "tried SELECTing tourneys_players.id:",tmp
|
|
||||||
|
|
||||||
try:
|
|
||||||
len(tmp)
|
|
||||||
except TypeError:
|
|
||||||
cursor.execute("""INSERT INTO TourneysPlayers
|
|
||||||
(tourneyId, playerId, payinAmount, rank, winnings) VALUES (%s, %s, %s, %s, %s)""",
|
|
||||||
(tourney_id, player_ids[i], payin_amounts[i], ranks[i], winnings[i]))
|
|
||||||
|
|
||||||
cursor.execute("SELECT id FROM TourneysPlayers WHERE tourneyId=%s AND playerId+0=%s",
|
|
||||||
(tourney_id, player_ids[i]))
|
|
||||||
tmp=cursor.fetchone()
|
|
||||||
#print "created new tourneys_players.id:",tmp
|
|
||||||
result.append(tmp[0])
|
|
||||||
return result
|
|
||||||
#end def store_tourneys_players
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user