2014-01-05 2 views
0

Как написать SQL-запрос в Python для выбора элементов LIKE IN Python list?Python SQLite SELECT LIKE IN [список]

Например, у меня есть список Python строк

Names=['name_1','name_2',..., 'name_n'] 

и SQLite_table.

Моя задача состоит в том, чтобы найти кратчайший путь к

SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_1%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_2%' 
... 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_n%' 
+0

дубликат http://stackoverflow.com/q/15041534/2266261? – Dunno

+0

Нет. Проблема НРАВИТСЯ. – drastega

+1

'SELECT элементы FROM SQLite_table WHERE element_name LIKE '% name_1%' ИЛИ ​​имя_имя LIKE '% name_2%' ИЛИ ​​имя_имя LIKE '% name_n%'' ?? – PostMan

ответ

2

Вам потребуется регулярное выражение вида name_1|name_2|name_3|…, который можно генерировать с помощью '|'.join(Names):

SELECT elements FROM SQLite_table WHERE element_name REGEXP 'name_1|name_2|name_3|…|name_n' 

Проверить How do I use regex in a SQLite query? для инструкций s о том, как использовать регулярные выражения в SQLite.

+0

Нет оператора REGEX, и связанные ответы говорят, что REGEXP недоступен по умолчанию. –

+0

Извините за опечатку. Однако связанные ответы дают достаточно информации для установки и использования оператора REGEXP. Например, [этот ответ] (http://stackoverflow.com/questions/5365451) устанавливает оператор в 5 строк Python. –

1

Mmhh

Names=['name_1','name_2','name_n'] 
for i in Names: 
    sql = "SELECT elements FROM SQLite_table WHERE element_name LIKE '%" + i + "%'" 
    print sql 

SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_1%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_2%' 
SELECT elements FROM SQLite_table WHERE element_name LIKE '%name_n%'