Merge branch 'master' of git://git.assembla.com/fpdb-sql
This commit is contained in:
commit
a5ac2dcf75
|
@ -409,7 +409,7 @@ class fpdb:
|
||||||
return self.fdb_lock.get_global_lock()
|
return self.fdb_lock.get_global_lock()
|
||||||
#end def obtain_global_lock
|
#end def obtain_global_lock
|
||||||
|
|
||||||
def quit(self, widget, data):
|
def quit(self, widget, data=None):
|
||||||
print "Quitting normally"
|
print "Quitting normally"
|
||||||
#check if current settings differ from profile, if so offer to save or abort
|
#check if current settings differ from profile, if so offer to save or abort
|
||||||
self.db.disconnect()
|
self.db.disconnect()
|
||||||
|
|
|
@ -179,13 +179,28 @@ class fpdb_db:
|
||||||
# For local domain-socket connections, only DB name is
|
# For local domain-socket connections, only DB name is
|
||||||
# needed, and everything else is in fact undefined and/or
|
# needed, and everything else is in fact undefined and/or
|
||||||
# flat out wrong
|
# flat out wrong
|
||||||
|
# sqlcoder: This database only connect failed in my windows setup??
|
||||||
|
# Modifed it to try the 4 parameter style if the first connect fails - does this work everywhere?
|
||||||
|
connected = False
|
||||||
if self.host == "localhost" or self.host == "127.0.0.1":
|
if self.host == "localhost" or self.host == "127.0.0.1":
|
||||||
self.db = psycopg2.connect(database = database)
|
try:
|
||||||
else:
|
self.db = psycopg2.connect(database = database)
|
||||||
self.db = psycopg2.connect(host = host,
|
connected = True
|
||||||
user = user,
|
except:
|
||||||
password = password,
|
pass
|
||||||
database = database)
|
#msg = "PostgreSQL direct connection to database (%s) failed, trying with user ..." % (database,)
|
||||||
|
#print msg
|
||||||
|
#raise fpdb_simple.FpdbError(msg)
|
||||||
|
if not connected:
|
||||||
|
try:
|
||||||
|
self.db = psycopg2.connect(host = host,
|
||||||
|
user = user,
|
||||||
|
password = password,
|
||||||
|
database = database)
|
||||||
|
except:
|
||||||
|
msg = "PostgreSQL connection to database (%s) user (%s) failed." % (database, user)
|
||||||
|
print msg
|
||||||
|
raise fpdb_simple.FpdbError(msg)
|
||||||
else:
|
else:
|
||||||
raise fpdb_simple.FpdbError("unrecognised database backend:"+backend)
|
raise fpdb_simple.FpdbError("unrecognised database backend:"+backend)
|
||||||
self.cursor=self.db.cursor()
|
self.cursor=self.db.cursor()
|
||||||
|
|
|
@ -165,9 +165,10 @@ class Importer:
|
||||||
start = datetime.datetime.now()
|
start = datetime.datetime.now()
|
||||||
print "started at", start, "--", len(self.filelist), "files to import.", self.settings['dropIndexes']
|
print "started at", start, "--", len(self.filelist), "files to import.", self.settings['dropIndexes']
|
||||||
if self.settings['dropIndexes'] == 'auto':
|
if self.settings['dropIndexes'] == 'auto':
|
||||||
self.settings['dropIndexes'] = self.calculate_auto()
|
self.settings['dropIndexes'] = self.calculate_auto2(10.0, 500.0)
|
||||||
if self.settings['dropIndexes'] == 'drop':
|
if self.settings['dropIndexes'] == 'drop':
|
||||||
self.fdb.prepareBulkImport()
|
self.fdb.prepareBulkImport()
|
||||||
|
#self.settings['updateHudCache'] = self.calculate_auto2(10.0, 500.0)
|
||||||
totstored = 0
|
totstored = 0
|
||||||
totdups = 0
|
totdups = 0
|
||||||
totpartial = 0
|
totpartial = 0
|
||||||
|
@ -202,6 +203,40 @@ class Importer:
|
||||||
if self.settings['handsInDB'] > 50000: return "don't drop"
|
if self.settings['handsInDB'] > 50000: return "don't drop"
|
||||||
return "drop"
|
return "drop"
|
||||||
|
|
||||||
|
def calculate_auto2(self, scale, increment):
|
||||||
|
"""A second heuristic to determine a reasonable value of drop/don't drop
|
||||||
|
This one adds up size of files to import to guess number of hands in them
|
||||||
|
Example values of scale and increment params might be 10 and 500 meaning
|
||||||
|
roughly: drop if importing more than 10% (100/scale) of hands in db or if
|
||||||
|
less than 500 hands in db"""
|
||||||
|
size_per_hand = 1300.0 # wag based on a PS 6-up FLHE file. Actual value not hugely important
|
||||||
|
# as values of scale and increment compensate for it anyway.
|
||||||
|
# decimal used to force float arithmetic
|
||||||
|
|
||||||
|
# get number of hands in db
|
||||||
|
if 'handsInDB' not in self.settings:
|
||||||
|
try:
|
||||||
|
tmpcursor = self.fdb.db.cursor()
|
||||||
|
tmpcursor.execute("Select count(1) from Hands;")
|
||||||
|
self.settings['handsInDB'] = tmpcursor.fetchone()[0]
|
||||||
|
except:
|
||||||
|
pass # if this fails we're probably doomed anyway
|
||||||
|
|
||||||
|
# add up size of import files
|
||||||
|
total_size = 0.0
|
||||||
|
for file in self.filelist:
|
||||||
|
if os.path.exists(file):
|
||||||
|
stat_info = os.stat(file)
|
||||||
|
total_size += stat_info.st_size
|
||||||
|
|
||||||
|
# if hands_in_db is zero or very low, we want to drop indexes, otherwise compare
|
||||||
|
# import size with db size somehow:
|
||||||
|
#print "auto2: handsindb =", self.settings['handsInDB'], "total_size =", total_size, "size_per_hand =", \
|
||||||
|
# size_per_hand, "inc =", increment
|
||||||
|
if self.settings['handsInDB'] < scale * (total_size/size_per_hand) + increment:
|
||||||
|
return "drop"
|
||||||
|
return "don't drop"
|
||||||
|
|
||||||
#Run import on updated files, then store latest update time.
|
#Run import on updated files, then store latest update time.
|
||||||
def runUpdated(self):
|
def runUpdated(self):
|
||||||
#Check for new files in monitored directories
|
#Check for new files in monitored directories
|
||||||
|
@ -359,7 +394,7 @@ class Importer:
|
||||||
self.hand=hand
|
self.hand=hand
|
||||||
|
|
||||||
try:
|
try:
|
||||||
handsId = fpdb_parse_logic.mainParser(self.settings['db-backend'], self.fdb.db
|
handsId = fpdb_parse_logic.mainParser(self.settings, self.fdb.db
|
||||||
,self.fdb.cursor, self.siteIds[site], category, hand, self.config)
|
,self.fdb.cursor, self.siteIds[site], category, hand, self.config)
|
||||||
self.fdb.db.commit()
|
self.fdb.db.commit()
|
||||||
|
|
||||||
|
|
|
@ -34,11 +34,12 @@ saveActions = True # set this to False to avoid storing action data
|
||||||
# variance not available on stats page
|
# variance not available on stats page
|
||||||
# : No graphs
|
# : No graphs
|
||||||
#stores a stud/razz hand into the database
|
#stores a stud/razz hand into the database
|
||||||
def ring_stud(config, backend, db, cursor, base, category, site_hand_no, gametype_id, hand_start_time
|
def ring_stud(config, settings, db, cursor, 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):
|
||||||
|
|
||||||
|
backend = settings['db-backend']
|
||||||
import_options = config.get_import_parameters()
|
import_options = config.get_import_parameters()
|
||||||
|
|
||||||
saveActions = False if import_options['saveActions'] == False else True
|
saveActions = False if import_options['saveActions'] == False else True
|
||||||
|
@ -54,7 +55,8 @@ def ring_stud(config, backend, db, cursor, base, category, site_hand_no, gametyp
|
||||||
,start_cashes, antes, card_values
|
,start_cashes, antes, card_values
|
||||||
,card_suits, winnings, rakes, seatNos)
|
,card_suits, winnings, rakes, seatNos)
|
||||||
|
|
||||||
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
if 'updateHudCache' not in settings or settings['updateHudCache'] != 'drop':
|
||||||
|
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
|
|
||||||
if saveActions:
|
if saveActions:
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, action_types
|
fpdb_simple.storeActions(cursor, hands_players_ids, action_types
|
||||||
|
@ -62,12 +64,13 @@ def ring_stud(config, backend, db, cursor, base, category, site_hand_no, gametyp
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def ring_stud
|
#end def ring_stud
|
||||||
|
|
||||||
def ring_holdem_omaha(config, backend, db, cursor, base, category, site_hand_no, gametype_id
|
def ring_holdem_omaha(config, settings, db, cursor, 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"""
|
||||||
|
|
||||||
|
backend = settings['db-backend']
|
||||||
import_options = config.get_import_parameters()
|
import_options = config.get_import_parameters()
|
||||||
saveActions = False if import_options['saveActions'] == False else True
|
saveActions = False if import_options['saveActions'] == False else True
|
||||||
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
||||||
|
@ -89,10 +92,11 @@ def ring_holdem_omaha(config, backend, db, cursor, base, category, site_hand_no,
|
||||||
, 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
|
#print "ring holdem, backend=%d" % backend
|
||||||
if fastStoreHudCache:
|
if 'updateHudCache' not in settings or settings['updateHudCache'] != 'drop':
|
||||||
fpdb_simple.storeHudCache2(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
if fastStoreHudCache:
|
||||||
else:
|
fpdb_simple.storeHudCache2(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
else:
|
||||||
|
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
t5 = time()
|
t5 = time()
|
||||||
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
||||||
t6 = time()
|
t6 = time()
|
||||||
|
@ -103,7 +107,7 @@ def ring_holdem_omaha(config, backend, db, cursor, base, category, site_hand_no,
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def ring_holdem_omaha
|
#end def ring_holdem_omaha
|
||||||
|
|
||||||
def tourney_holdem_omaha(config, backend, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout
|
def tourney_holdem_omaha(config, settings, db, cursor, 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
|
||||||
|
@ -112,6 +116,7 @@ def tourney_holdem_omaha(config, backend, db, cursor, base, category, siteTourne
|
||||||
,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"""
|
||||||
|
|
||||||
|
backend = settings['db-backend']
|
||||||
import_options = config.get_import_parameters()
|
import_options = config.get_import_parameters()
|
||||||
saveActions = True if import_options['saveActions'] == True else False
|
saveActions = True if import_options['saveActions'] == True else False
|
||||||
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
||||||
|
@ -130,10 +135,11 @@ def tourney_holdem_omaha(config, backend, db, cursor, base, category, siteTourne
|
||||||
, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids)
|
, card_values, card_suits, winnings, rakes, seatNos, tourneys_players_ids)
|
||||||
|
|
||||||
#print "tourney holdem, backend=%d" % backend
|
#print "tourney holdem, backend=%d" % backend
|
||||||
if fastStoreHudCache:
|
if 'updateHudCache' not in settings or settings['updateHudCache'] != 'drop':
|
||||||
fpdb_simple.storeHudCache2(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
if fastStoreHudCache:
|
||||||
else:
|
fpdb_simple.storeHudCache2(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
else:
|
||||||
|
fpdb_simple.storeHudCache(backend, cursor, base, category, gametype_id, hand_start_time, player_ids, hudImportData)
|
||||||
|
|
||||||
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
fpdb_simple.store_board_cards(cursor, hands_id, board_values, board_suits)
|
||||||
|
|
||||||
|
@ -142,13 +148,14 @@ def tourney_holdem_omaha(config, backend, db, cursor, base, category, siteTourne
|
||||||
return hands_id
|
return hands_id
|
||||||
#end def tourney_holdem_omaha
|
#end def tourney_holdem_omaha
|
||||||
|
|
||||||
def tourney_stud(config, backend, db, cursor, base, category, siteTourneyNo, buyin, fee, knockout, entries
|
def tourney_stud(config, settings, db, cursor, 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
|
||||||
|
|
||||||
|
backend = settings['db-backend']
|
||||||
import_options = config.get_import_parameters()
|
import_options = config.get_import_parameters()
|
||||||
saveActions = True if import_options['saveActions'] == True else False
|
saveActions = True if import_options['saveActions'] == True else False
|
||||||
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
fastStoreHudCache = True if import_options['fastStoreHudCache'] == True else False
|
||||||
|
@ -165,7 +172,8 @@ def tourney_stud(config, backend, db, cursor, base, category, siteTourneyNo, buy
|
||||||
, playerIds, startCashes, antes, cardValues, cardSuits
|
, playerIds, startCashes, antes, cardValues, cardSuits
|
||||||
, winnings, rakes, seatNos, tourneys_players_ids)
|
, winnings, rakes, seatNos, tourneys_players_ids)
|
||||||
|
|
||||||
fpdb_simple.storeHudCache(backend, cursor, base, category, gametypeId, hand_start_time, playerIds, hudImportData)
|
if 'updateHudCache' not in settings or settings['updateHudCache'] != 'drop':
|
||||||
|
fpdb_simple.storeHudCache(backend, cursor, base, category, gametypeId, hand_start_time, playerIds, hudImportData)
|
||||||
|
|
||||||
if saveActions:
|
if saveActions:
|
||||||
fpdb_simple.storeActions(cursor, hands_players_ids, actionTypes, allIns, actionAmounts, actionNos)
|
fpdb_simple.storeActions(cursor, hands_players_ids, actionTypes, allIns, actionAmounts, actionNos)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user