Как не вставлять данные в таблицу, если они УЖЕ в ней есть?
У меня есть следующая информация об играх НХЛ, которую я добавляю в таблицу games. Таблицу games я создаю следующим запросом:
cur.execute('CREATE TABLE IF NOT EXISTS games (GAMEDATE DATE NOT NULL, AWAY_TEAM varchar(32), HOME_TEAM varchar(32), SCORES varchar(32))')
for line in all_stlouis_games_list:
sql_string = """ INSERT INTO games (GAMEDATE, AWAY_TEAM, HOME_TEAM, SCORES) VALUES (%s,%s,%s,%s) ON CONFLICT DO NOTHING"""
record_to_insert = tuple(line)
cur.execute(sql_string, record_to_insert)
conn.commit()
Мне нужно, чтобы в таблицу не вставлялись уже существующие в ней записи. Допустим, если в таблице уже есть 2022-01-08 Washington Capitals St. Louis Blues 6, то данная строка не будет помещаться в таблицу снова.
Я пытался воспользоваться ON CONFLICT, но никакого результата это мне не дало. Я не до конца понимаю, как оно работает, судя по всему, работаете при совпадении уникальных id.
Возможно, я могу воспользоваться INSERT ... WHERE NOT EXIST (SELECT FROM games WHERE...) но точно не знаю как правильно это сделать в моем случае.
2022-01-08 Washington Capitals St. Louis Blues 6
2022-01-09 Dallas Stars St. Louis Blues 3
2022-01-14 Seattle Kraken St. Louis Blues 3
2022-01-16 Toronto Maple Leafs St. Louis Blues 11
2022-01-18 Nashville Predators St. Louis Blues 8
2022-01-08 Washington Capitals St. Louis Blues 6
2022-01-09 Dallas Stars St. Louis Blues 3
2022-01-14 Seattle Kraken St. Louis Blues 3
2022-01-16 Toronto Maple Leafs St. Louis Blues 11
2022-01-18 Nashville Predators St. Louis Blues 8