gpt4 book ai didi

python - 仅当组中的最新记录不同时才插入表中

转载 作者:行者123 更新时间:2023-11-29 09:28:56 24 4
gpt4 key购买 nike

我有一个包含以下列的 MySQL 表:

score_id (int10, auto_increment, primary key); 
game_id (int10);
away_team_score (int10);
home_team_score (int10);
date_time (datetime);

我正在抓取一个Web API(使用Python),我试图将一个数组写入该数据库。但是,每次我阅读此 API 时,它都会提供所有事件的列表。仅当每个 game_id 的away_team_score 或home_team_score 存在差异时,我才尝试写入此数据库。

我可以使用此示例中的查询获取最新记录 ( mySQL GROUP, most recent )。但是,我不确定如何检查我插入的值是否相同。

我不想使用更新,因为我想保留分数用于历史目的。另外,如果game_id不存在,则应插入它。

我目前拥有的Python代码:

# Connecting to the mysql database
mydb = mysql.connector.connect(host="examplehost", user="exampleuser", passwd="examplepassword", database="exampledb")
mycursor = mydb.cursor()
# example scores array that I scraped
# It is in the format of game_id, away_team_score, home_team_score, date_time
scores = [[1, 0, 1, '2019-11-30 13:05:00'], [2, 1, 5, '2019-11-30 13:05:00'], [3, 4, 8, '2019-11-30 13:05:00'],
[4, 6, 1, '2019-11-30 13:05:00'], [5, 0, 2, '2019-11-30 13:05:00']]

# Inserting into database
game_query = "INSERT INTO tbl_scores (game_id, away_team_score, home_team_score, date_time) VALUES (%s, %s, %s, %s)"

mycursor.executemany(game_query, scores)
mydb.commit()

mydb.close()

最佳答案

您需要使用 MySQL 中的 UPSERT 功能。将插入查询更改为以下查询只会在有新游戏 ID 时插入,否则会更新分数:

INSERT INTO tbl_scores
(game_id, score_id, away_team_score, home_team_score, date_time)
VALUES
(game_id, score_id, away_team_score, home_team_score, date_time)
ON DUPLICATE KEY UPDATE
game_id = game_id,
away_team_score = away_team_score,
home_team_score = home_team_score,
date_time = date_time;

有关更新插入的详细信息 - https://dev.mysql.com/doc/refman/8.0/en/insert-on-duplicate.html

请告诉我这是否有帮助。

关于python - 仅当组中的最新记录不同时才插入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59119407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com