@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, но боюсь что при росте таблицы будут тормоза при записи? Или пусть скрипт пишет все подряд, а потом отдельным скриптом раз в сутки проверять значения на уникальность и удалять лишние?

Есть ли какое-то "стандартное" решение, или по какому более правильному пути пойти?
  • Вопрос задан
  • 78 просмотров
Решения вопроса 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 ));
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
BojackHorseman
@BojackHorseman
...в творческом отпуске...
даже если значение в одном столбце совпадает - строка записана не будет

нет, требуется совпадение значения ключа, а ключ может быть составным (набор полей).
выберите правильно ключ.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Aurora Infinity Москва
от 100 000 до 200 000 ₽
27 сент. 2020, в 00:32
20000 руб./за проект
26 сент. 2020, в 23:26
2000 руб./за проект
26 сент. 2020, в 21:27
100000 руб./за проект