У меня есть список значений python и таблица postgresql с определенным столбцом в нем. Я хотел бы знать, для каждого элемента в моем списке python есть ли какая-либо строка в таблице с этим идентификатором.Проверка наличия списка значений python в psycopg2/postgresql
Например, предположим, что у меня есть этот список Python:
vals = [4, 8, 15, 16, 23, 42]
а также о том, что запрос:
select my_col from my_table;
дает:
[4, 5, 6, 7, 8]
Тогда я хотел бы запрос что возвращается:
[True, True, False, False, False, False]
Я мог бы прокрутить список и выполнить новый «select exists» для каждого значения, но я задавался вопросом, есть ли способ сделать это за один вызов?
Я ограничен PostGreSQL 9.0
Почему бы просто не использовать 2 строки Python после 'select'? Один, чтобы сделать этот результат в set 's', а затем просто' [x в s для x в vals] '? –
Так что вытащите всю колонку DB в python? Это сработает. В какой-то момент у него будет несколько сотен миллионов записей, поэтому не уверен, что это будет плохо для производительности? (Столбец будет проиндексирован.) – JoeZuntz
Пример просто для иллюстрации - я действительно не выбираю полный столбец в своем коде. – JoeZuntz