0
cur.execute("""SELECT match_own_goals.game_id, home_team, away_team, team, time FROM football.match_own_goals JOIN football.match_info ON match_own_goals.game_id = match_info.game_id""")
e = cur.fetchall()

for game in e:
        print game
        time = game[4]
        if game[3] == 1:
            team_id = game[1]
        else:
            team_id = game[2]
        cur.execute("""UPDATE football.match_own_goals SET team_id = %s WHERE game_id = %s AND time = %s""", (team_id, game[0], time))
        db.commit()

在应该更新的 108 行中,它只更新了大约 10 行,我不知道为什么会这样。它提取 SELECT 语句中的所有信息。这可能很明显,但已经晚了哈哈。

Team 是 1 或 2,最初表示主场或客场

谢谢

4

1 回答 1

0

查询是:

UPDATE football.match_own_goals
    SET team_id = %s
    WHERE game_id = %s AND time = %s

如果这有时有效,那么查询在语法上是正确的,并且您已连接到数据库。

发生的事情是所选行不是您所期望的。因此,运行此查询以查看应更新的内容:

select *
from football.match_own_goals
WHERE game_id = %s AND time = %s

这两个字段之一导致比较出现问题。

我的猜测是时间字段是问题所在。时间可以非常精确,比打印到用户输出的内容更精确。例如,也许时间保持在 1/10 秒,但时间只打印到秒。只有大约 1/10 的行会真正匹配完全匹配。

于 2013-02-28T02:10:08.113 回答