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