Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 14, 2016 20:40:14

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy найти чего из списка нет в таблице

В БД есть таблица в которой перечислены телефонные номера. Приложение получает небольшой список номеров и нужно найти каких номеров нет в базе.

Я понимаю как проверить каких данных таблицы нет в списке, а как наоборот сделать ума не приложу.

Сейчас пока нахожу, что из списка уже есть в таблице и потом с помощью python нахожу нужное мне, но думается мне, что можно все решить правильным запросом к БД. Помогите пожалуйста, как можно сделать то, что я хочу с помощью sqlalchemy?
P.S бд sqlite

Офлайн

#2 Фев. 14, 2016 21:00:21

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

sqlalchemy найти чего из списка нет в таблице

Можно поступить проще. Получить все телефонные номера из списка, которые есть в базе. А потом сделать вычисление разности по множествам: из всех телефонов вычесть существующие.

Отредактировано 4kpt_IV (Фев. 14, 2016 21:00:54)

Офлайн

#3 Фев. 14, 2016 21:08:03

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy найти чего из списка нет в таблице

4kpt_IV
Я знаю о множествах, но что если на пример база очень большая будет? В этом случае все в ОЗУ грузить + делать такой тяжелый запрос не очень хорошо мне кажется, разве не так?

Офлайн

#4 Фев. 14, 2016 21:49:25

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

sqlalchemy найти чего из списка нет в таблице

Скажем так. Вы не дали исходных условий. Более подробно так.

Вариант A. Если количество номеров для проверки большое очень, тогда можно последовательно пройтись и проверить на exists (самая менее затратная операция).

Вариант B: Если же номеров для проверки не много, то можно просто проверить через in_ и получить все существующие в базе данных номера из проверяемого списка и потом получить те номера, которых в базе нет с использование множеств и начального списка.

Отредактировано 4kpt_IV (Фев. 14, 2016 22:10:54)

Офлайн

#5 Фев. 15, 2016 08:49:55

jon34
Зарегистрирован: 2016-02-14
Сообщения: 47
Репутация: +  0  -
Профиль   Отправить e-mail  

sqlalchemy найти чего из списка нет в таблице

4kpt_IV
Вариант B
Ну сейчас именно так и реализовано это. Просто думал, что есть более оптимальный вариант, по этому задавал вопрос тут.
Спасибо за помощь)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version