独立して実行されるスレッドがあります
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 に、これらの問題の原因であると認識していない何かがありますか?