Имеем сайт на джанго и БД. Нужно найти информацию по БД и вывести ее на сайт. Реализовал ее так. Насколько это грамотно в плане безопасности, т.к. везде написано склейка запроса не есть хорошо?
Может есть более эффективный способ? Заранее спасибо!
s = 'плиточный клей knauf or кнауф'
l = s.split()
print(s)
search = {}
if 'or' in l:
for i in range(len(l)):
if l[i] == 'or' or l[i] in search.values():
continue
elif i == len(l)-1:
print(i, len(l))
search[l[i]] = None
break
elif l[i+1] != 'or':
search[l[i]] = None
else:
search[l[i]] = l[i+2]
else:
for i in l:
search[i] = None
print(search)
s_l = "name LIKE '%"
s_or = ' OR '
s_and = ' AND '
itog = 'SELECT * from main WHERE '
for i, v in search.items():
if v == None:
itog += "(" + s_l + i + r"%'" + ")" + s_and
elif v != None:
itog += "(" + s_l + i + r"%'" + s_or + s_l + v + r"%'" + ")" + s_and
if itog[-1] == ')':
print(itog + ';')
else:
print(itog[:-5] + ';')