@gonchar0ff

Как записывать только уникальные строки в SQLite?

Добрый день!
Возник вопрос, никак не могу сообразить, задача стоит следующая: с определенного сайта собираю через BeautifulSoup данные о предстоящих спортивных событиях в формате:
Футбол - 08/08 - 19:00 - Команда 1 - Команда 2, Лига Чемпионов
Теннис - 08/08 - 18:00 - Игрок 1 - Игрок 2, WTA
Далее все это записывается в БД на SQLite. Парсинг запускается 1 раз в 30 минут, и необходимо записывать только уникальные значения в строки, то есть, при повторном запуске парсинга хочется сделать, что бы повторные значения просто игнорировались.

Если я правильно понимаю, при использовании INSERT OR IGNORE, даже если значение в одном столбце совпадает - строка записана не будет. Но что делать, если например через неделю будет матч:
Футбол - 15/08 - 19:00 - Команда 1 - Команда 2, Лига Чемпионов
Получается, что одинаковое будет все, кроме даты, получается что нужно проверять сразу например дату, время, название команды.

Хотел сделать что бы при записи в базу был запрос SELECT, и если такой уникальной строки нет - делать INSERT, но боюсь что при росте таблицы будут тормоза при записи? Или пусть скрипт пишет все подряд, а потом отдельным скриптом раз в сутки проверять значения на уникальность и удалять лишние?

Есть ли какое-то "стандартное" решение, или по какому более правильному пути пойти?
  • Вопрос задан
  • 1530 просмотров
Решения вопроса 1
shabelski89
@shabelski89
engineer
какая структура таблицы?
Всё правильно, надо использовать INSERT OR IGNORE, но определить PRIMARY KEY, в данном случае на основе нескольких полей, и тогда через неделю запись добавиться, так как поле play_date другое значение имеет.
CREATE TABLE IF NOT EXISTS games
(game TEXT NOT NULL, play_date TEXT NOT NULL, play_time TEXT NOT NULL, 
team_a TEXT NOT NULL, team_b TEXT NOT NULL, cup TEXT, 
PRIMARY KEY (game , play_date , play_time ));
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы