1
我想用模擬比賽的Python代碼構建一個PostgreSQL數據庫。球員表包含四列 - 名稱,編號,勝利,比賽。更新對PostgreSQL表不能正常工作的查詢
reportMatch()
函數需要兩個參數,一個特定匹配的贏家和輸家的ID,並更新數據庫中的統計信息。它將由1
def reportMatch(winner, loser):
conn = connect()
c = conn.cursor()
SQL = 'update players set wins = 1 where id = %s;'
data = (winner,)
c.execute(SQL, data)
SQL = 'update players set matches = 1 where id = %s or id = %s;'
data = (winner, loser)
c.execute(SQL, data)
遞增1獲勝者的「勝」,和的「匹配」兩個球員,我知道我不應該設置勝匹配1,因爲它不是遞增當前值,但數據庫目前沒有匹配。所以,我第一次運行它時,將該值設置爲1可以暫時運行。
上述功能是通過客戶端代碼函數調用,testReportMatches()
:
def testReportMatches():
registerPlayer("Bruno Walton")
registerPlayer("Boots O'Neal")
registerPlayer("Cathy Burton")
registerPlayer("Diane Grant")
standings = playerStandings()
[id1, id2, id3, id4] = [row[1] for row in standings]
reportMatch(id1, id2)
reportMatch(id3, id4)
standings = playerStandings()
for (n, i, w, m) in standings:
if m != 1:
raise ValueError("Each player should have one match recorded.")
if i in (id1, id3) and w != 1:
raise ValueError("Each match winner should have one win recorded.")
elif i in (id2, id4) and w != 0:
raise ValueError("Each match loser should have zero wins recorded.")
print "7. After a match, players have updated standings."
registerPlayer()
用於插入一個新的玩家進入球員數據庫。 playerStandings()
用於獲取所有玩家的元組列表。
我遇到的問題是reportMatch()
中的更新查詢,這似乎不起作用。我試圖在reportMatch()
testReportMatches()
的兩次調用之前和之後打印排名,但他們都有匹配並贏得0。不知何故,數據庫中的匹配和勝利沒有被更新。
謝謝。我不敢相信我是一個白癡,所以我放棄了這個承諾。 –