1
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]
    print type(time)
    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 time = %s AND game_id = %s""", (team_id, time, game[0]))
db.commit()

これにより、行の約 10% が更新されましたが、その理由はわかりません。time は実際にはフロートです (時間を表すのではなく、サッカーの試合中の特定の時点 (87 分、54 分など) を表します)。

削除したときは問題なく機能したため、時間は間違いなく問題ですが、他のテーブルには本当に必要です。

私は何を間違っていますか?ありがとう

4

1 に答える 1

1

time = %sこれは間違いなく問題です (浮動小数点数と方程式演算子を適切に比較することはできません。詳細については、こちらを参照してください)。

于 2013-02-28T18:18:51.300 に答える