У меня есть список значений (слов), и я хочу проверить, содержит ли столбец в моей таблице значение (любое значение) из списка.Несколько слов в поле Where LIKE
Мой список может быть очень длинным, поэтому я хочу, чтобы создать его, используя для цикла, например:
words = ('one', 'two', 'three')
whereClause=""
a=""
for word in words:
temp=" item LIKE '%" +word + " %' or"
whereClause=whereClause+temp
whereClause = whereClause[17:] #delete first "item LIKE"
whereClause = whereClause[:-3] #delete last "or"
Теперь я хочу, чтобы положить его в моем запросе SQL:
sql= """select name
from table
where item LIKE ? """
cursor.execute(sql, whereClause)
rows=cursor.fetchall()
Это не работает, какие-либо предложения?
Как вы думаете, что лучше получить все значения столбца «имя», используя SQL запрос и только затем проверить, если значения из списка существует с помощью Python? Спасибо!
ваша проблема, когда вы удалите свой первый пункт как. Упростить вещи и в вашей переменной sql оставить ее как «где?» и не удаляйте первый элемент, как –
Пожалуйста, не создавайте предложение 'where' таким образом, поскольку оно предоставляет вам атаки SQL-инъекции. Лучше всего построить так много итераций 'OR item LIKE? 'Как количество элементов в' words'. Затем передайте весь массив 'words' как sqlParameter во время выполнения. – Stavr00
спасибо @ Stavr00, но я не уверен, что понимаю вашу идею. не могли бы вы объяснить? – user5435739