jon34
Фев. 14, 2016 20:40:14
В БД есть таблица в которой перечислены телефонные номера. Приложение получает небольшой список номеров и нужно найти каких номеров нет в базе.
Я понимаю как проверить каких данных таблицы нет в списке, а как наоборот сделать ума не приложу.
Сейчас пока нахожу, что из списка уже есть в таблице и потом с помощью python нахожу нужное мне, но думается мне, что можно все решить правильным запросом к БД. Помогите пожалуйста, как можно сделать то, что я хочу с помощью sqlalchemy?
P.S бд sqlite
4kpt_IV
Фев. 14, 2016 21:00:21
Можно поступить проще. Получить все телефонные номера из списка, которые есть в базе. А потом сделать вычисление разности по множествам: из всех телефонов вычесть существующие.
jon34
Фев. 14, 2016 21:08:03
4kpt_IV
Я знаю о множествах, но что если на пример база очень большая будет? В этом случае все в ОЗУ грузить + делать такой тяжелый запрос не очень хорошо мне кажется, разве не так?
4kpt_IV
Фев. 14, 2016 21:49:25
Скажем так. Вы не дали исходных условий. Более подробно так.
Вариант A. Если количество номеров для проверки большое очень, тогда можно последовательно пройтись и проверить на exists (самая менее затратная операция).
Вариант B: Если же номеров для проверки не много, то можно просто проверить через in_ и получить все существующие в базе данных номера из проверяемого списка и потом получить те номера, которых в базе нет с использование множеств и начального списка.
jon34
Фев. 15, 2016 08:49:55
4kpt_IV
Вариант B
Ну сейчас именно так и реализовано это. Просто думал, что есть более оптимальный вариант, по этому задавал вопрос тут.
Спасибо за помощь)