我有一个独立运行的线程
thread.start_new_thread(listeningTF2Servers, ())
最终调用此方法:
def updateStats():
...
for player in pastGames[i]['players']:
...
cursor.execute('SELECT yes FROM newstats WHERE nick = \'' + player['nick'] + '\' ORDER BY totalgames DESC LIMIT 1')
for row in cursor.fetchall():
if row[0] == 1:
if scoreDict[player['team']] == 1:
cursor.execute('UPDATE newstats SET totalgames = totalgames + 1, wins = wins + 1, medicgames = medicgames + 1, medicwins = medicwins +1 WHERE nick = \'' + lower(player['nick']) + '\'')
cursor.execute('COMMIT;')
else:
#similar query
else:
if scoreDict[player['team']] == 1:
cursor.execute('UPDATE newstats SET totalgames = totalgames + 1, wins = wins + 1 WHERE nick = \'' + lower(player['nick']) + '\'')
cursor.execute('COMMIT;')
else:
#similar query
...
事情就是这样。在此方法之前出现的线程中的所有其他内容都可以正常工作。
但 updateStats() 似乎工作......奇怪。但是大约一半必须更新的玩家似乎没有在数据库中更新。
例如,在每场比赛之后都会调用此方法,以便玩家的比赛统计数据和获胜统计数据递增。但是对于某些玩家群体来说,这种情况永远不会发生,即使对于所有其他玩过相同游戏的玩家来说,统计数据都会正确更新。
我的代码是否存在导致线程或 postgres 问题的问题?或者是否有一些我不知道的 SQL、postgres 或 Python 会导致这些问题?