Найти - Пользователи
Полная версия: Запрос в MySQL
Начало » Базы данных » Запрос в MySQL
1
sharkk
Добрый день!
Имеем сайт на джанго и БД. Нужно найти информацию по БД и вывести ее на сайт. Реализовал ее так. Насколько это грамотно в плане безопасности, т.к. везде написано склейка запроса не есть хорошо?
Может есть более эффективный способ? Заранее спасибо!
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] + ';')
FishHook
sharkk
Вы занимаетесь глупостями. Джанго - это ОРМ, всё что вы делаете конкатенацией строк делается гораздо проще и надежнее через стандартные джанговские запросы.
sharkk
FishHook
Вы занимаетесь глупостями. Джанго - это ОРМ, всё что вы делаете конкатенацией строк делается гораздо проще и надежнее через стандартные джанговские запросы.
Про глупости это и так понятно (Реализовано, как смог ). С джанго столкнулся впервые, по Вашим двум словам “Джанго и ОРМ” уже нашел парочку ссылок на хабре, читаю, спасибо!
Это имеет место на право существования или настолько все плохо? Не скупитесь на коментарии, лучше поконкретнее как не делать и почему, если не трудно конечно.
Если что еще есть, буду рад всему ссылкам, примерам кода и т.д.
JOHN_16
sharkk
https://docs.djangoproject.com/en/2.0/intro/
Видели видеоролик где рабочий берет неподключенный отбойный молоток и мучаясь долбил им стену, вместо того что бы подключить его и спокойно сделать свою работу. Вот вы сейчас тем же занимаетесь.
sharkk
В моем случае. Повторю, что запрос это простое текстовое поле вводимое пользователем из него и формирую запрос.
SELECT * from main WHERE (name LIKE ‘%клей%’) AND (name LIKE ‘%knauf%’ OR name LIKE ‘%кнауф%’) AND (name LIKE ‘%плиточный%’);

Пришли к такой же контантенации только на выходе избавились от кавычек вокруг %s.
cursor.execute("SELECT * FROM main WHERE (name LIKE %s) AND (name LIKE %s OR name LIKE %s) AND (name LIKE %s), (self.q))
Чую не все еще.
Помогите влючить этот отбойный молоток!
FishHook
sharkk
Пройдите туториал, вам никто не обязан давать бесплатные консультации только лишь потому, что вам лень читать учебники.
JOHN_16
Вы совсем ничего не понял и это грустно
sharkk
Пришел направить мысли в нужное русло, а посмотрел видеоролик с отбойным молотком.
Сделал по https://docs.djangoproject.com/en/2.0/topics/db/sql/, пока успокоился.
FishHook
Ну что тут скажешь? Тупо сковано - не наточишь, тупо рождено - не научишь.
sharkk
А я думал, чемпионами не рождаются, ими становяться. Ну да ладно, Ваша жизненая позиция мне ясна
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB