我有一个独立运行的线程
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中有什么我不知道的东西导致了这些问题?你知道吗
只是一个有根据的猜测: 传递给第一个查询
player['nick']
,但是传递给其他调用lower(player['nick'])
,尽管所有查询都影响newstats.nick
。所以我的猜测是,结果会有所不同,取决于一个球员的尼克是否都是小写。你知道吗你应该这样做:
相关问题 更多 >
编程相关推荐