super hyper-speed version of recognisePlayerIDs() only makes 1-3 database queries per hand instead of between 2 and 30, worst case.
This commit is contained in:
		
							parent
							
								
									3c14055244
								
							
						
					
					
						commit
						2681b517a7
					
				|  | @ -1388,21 +1388,49 @@ def recogniseTourneyTypeId(cursor, siteId, buyin, fee, knockout, rebuyOrAddon): | ||||||
| #end def recogniseTourneyTypeId | #end def recogniseTourneyTypeId | ||||||
|   |   | ||||||
| #returns the SQL ids of the names given in an array | #returns the SQL ids of the names given in an array | ||||||
|  | # TODO: if someone gets industrious, they should make the parts that use the output of this function deal with a dict | ||||||
|  | # { playername: id } instead of depending on it's relation to the positions list | ||||||
|  | # then this can be reduced in complexity a bit | ||||||
|  | 
 | ||||||
| def recognisePlayerIDs(cursor, names, site_id): | def recognisePlayerIDs(cursor, names, site_id): | ||||||
|     result = [] |     cursor.execute("SELECT name,id FROM Players WHERE name='%s'" % "' OR name='".join(names)) # get all playerids by the names passed in | ||||||
|     for n in names: |     ids = dict(cursor.fetchall()) # convert to dict | ||||||
|         cursor.execute("SELECT id FROM Players WHERE name=%s", (n,)) |     if len(ids) != len(names): | ||||||
|         tmp = cursor.fetchall() |         notfound = [n for n in names if n not in ids] # make list of names not in database | ||||||
|         if len(tmp) == 0: |         if notfound: # insert them into database | ||||||
|             cursor.execute("INSERT INTO Players (name, siteId) VALUES (%s, %s)", (n, site_id)) |             cursor.executemany("INSERT INTO Players (name, siteId) VALUES (%s, "+str(site_id)+")", (notfound)) | ||||||
|             cursor.execute("SELECT id FROM Players WHERE name=%s", (n,)) |             cursor.execute("SELECT name,id FROM Players WHERE name='%s'" % "' OR name='".join(notfound)) # get their new ids | ||||||
|             tmp = cursor.fetchall() |             tmp = dict(cursor.fetchall()) | ||||||
|  |             for n in tmp: # put them all into the same dict | ||||||
|  |                 ids[n] = tmp[n] | ||||||
|                  |                  | ||||||
|         result.append(tmp[0][0]) |     # return them in the SAME ORDER that they came in in the names argument, rather than the order they came out of the DB | ||||||
|                             |     return [ids[n] for n in names] | ||||||
|     return result |  | ||||||
| #end def recognisePlayerIDs | #end def recognisePlayerIDs | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
|  | # Here's a version that would work if it wasn't for the fact that it needs to have the output in the same order as input | ||||||
|  | # this version could also be improved upon using list comprehensions, etc | ||||||
|  | 
 | ||||||
|  | #def recognisePlayerIDs(cursor, names, site_id): | ||||||
|  | #    result = [] | ||||||
|  | #    notfound = [] | ||||||
|  | #    cursor.execute("SELECT name,id FROM Players WHERE name='%s'" % "' OR name='".join(names)) | ||||||
|  | #    tmp = dict(cursor.fetchall()) | ||||||
|  | #    for n in names: | ||||||
|  | #        if n not in tmp: | ||||||
|  | #            notfound.append(n) | ||||||
|  | #        else: | ||||||
|  | #            result.append(tmp[n]) | ||||||
|  | #    if notfound: | ||||||
|  | #        cursor.executemany("INSERT INTO Players (name, siteId) VALUES (%s, "+str(site_id)+")", (notfound)) | ||||||
|  | #        cursor.execute("SELECT id FROM Players WHERE name='%s'" % "' OR name='".join(notfound)) | ||||||
|  | #        tmp = cursor.fetchall() | ||||||
|  | #        for n in tmp: | ||||||
|  | #            result.append(n[0]) | ||||||
|  | #         | ||||||
|  | #    return result | ||||||
|  |   | ||||||
| #recognises the name in the given line and returns its array position in the given array | #recognises the name in the given line and returns its array position in the given array | ||||||
| def recognisePlayerNo(line, names, atype): | def recognisePlayerNo(line, names, atype): | ||||||
|     #print "recogniseplayerno, names:",names |     #print "recogniseplayerno, names:",names | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user