[英]Python updating a sql DB
有一個程序可以接收播放器名稱和結果的列表。 然后嘗試將它們添加到SQL DB。 如果玩家名稱已經在列表中,我希望它通過將當前分數添加到已存儲的分數來在該分數處更新分數。 我正在嘗試通過使用ON DUPLICATE KEY UPDATE語句來執行此操作,但是我不確定如何告訴它使用該值。 這是我的代碼。
from mysql.connector.cursor import MySQLCursorPrepared
print(playerNames ,playerScore )
try:
#MariaDB Connection
con = mysql.connector.connect(port=5004,user='root',password='password',host='localhost',database='scoreboard')
records_to_insert = [ (playerNames[0],playerScore[0]) ,
(playerNames[1],playerScore[1]),
(playerNames[2],playerScore[2]) ,
(playerNames[3],playerScore[3])
]
sql_insert_query = " INSERT INTO results (Player, Score) VALUES (%s,%s) ON DUPLICATE KEY UPDATE Score = VALUES(Score) + %s; "
myCursor = con.cursor()
myCursor.executemany(sql_insert_query, records_to_insert)
con.commit()
我知道問題出在使用“ = VALUES(Score)+%s”,但是我不確定如何再告訴它我要在此處使用什么值。 任何建議將不勝感激。
您可以簡單地使用以下表達式:
INSERT INTO results (Player, Score)
VALUES (%s, %s)
ON DUPLICATE KEY UPDATE Score = VALUES(Score) + Score;
筆記:
Player
上具有唯一索引(或者更好的是,它是主鍵)。 Score
聲明為NOT NULL
以確保其始終具有合理的值。 sql_insert_query = " INSERT INTO results (Player, Score) VALUES {0},{1}) ON DUPLICATE
KEY UPDATE Score = VALUES(Score) + {1}; ".format(playerNames[0],playerScore[1])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.