Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 18, 2018 15:36:34

sharkk
Зарегистрирован: 2015-12-06
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в MySQL

Добрый день!
Имеем сайт на джанго и БД. Нужно найти информацию по БД и вывести ее на сайт. Реализовал ее так. Насколько это грамотно в плане безопасности, т.к. везде написано склейка запроса не есть хорошо?
Может есть более эффективный способ? Заранее спасибо!

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] + ';')

Отредактировано sharkk (Янв. 18, 2018 15:42:38)

Офлайн

#2 Янв. 19, 2018 04:46:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос в MySQL

sharkk
Вы занимаетесь глупостями. Джанго - это ОРМ, всё что вы делаете конкатенацией строк делается гораздо проще и надежнее через стандартные джанговские запросы.



Офлайн

#3 Янв. 19, 2018 10:05:39

sharkk
Зарегистрирован: 2015-12-06
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в MySQL

FishHook
Вы занимаетесь глупостями. Джанго - это ОРМ, всё что вы делаете конкатенацией строк делается гораздо проще и надежнее через стандартные джанговские запросы.
Про глупости это и так понятно (Реализовано, как смог ). С джанго столкнулся впервые, по Вашим двум словам “Джанго и ОРМ” уже нашел парочку ссылок на хабре, читаю, спасибо!
Это имеет место на право существования или настолько все плохо? Не скупитесь на коментарии, лучше поконкретнее как не делать и почему, если не трудно конечно.
Если что еще есть, буду рад всему ссылкам, примерам кода и т.д.

Отредактировано sharkk (Янв. 19, 2018 10:26:24)

Офлайн

#4 Янв. 19, 2018 11:26:24

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запрос в MySQL

sharkk
https://docs.djangoproject.com/en/2.0/intro/
Видели видеоролик где рабочий берет неподключенный отбойный молоток и мучаясь долбил им стену, вместо того что бы подключить его и спокойно сделать свою работу. Вот вы сейчас тем же занимаетесь.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#5 Янв. 19, 2018 14:02:16

sharkk
Зарегистрирован: 2015-12-06
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в MySQL

В моем случае. Повторю, что запрос это простое текстовое поле вводимое пользователем из него и формирую запрос.
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))
Чую не все еще.
Помогите влючить этот отбойный молоток!

Отредактировано sharkk (Янв. 19, 2018 14:05:33)

Офлайн

#6 Янв. 19, 2018 14:17:00

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос в MySQL

sharkk
Пройдите туториал, вам никто не обязан давать бесплатные консультации только лишь потому, что вам лень читать учебники.



Офлайн

#7 Янв. 19, 2018 15:24:45

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Запрос в MySQL

Вы совсем ничего не понял и это грустно



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Янв. 19, 2018 22:12:05

sharkk
Зарегистрирован: 2015-12-06
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в MySQL

Пришел направить мысли в нужное русло, а посмотрел видеоролик с отбойным молотком.
Сделал по https://docs.djangoproject.com/en/2.0/topics/db/sql/, пока успокоился.

Отредактировано sharkk (Янв. 19, 2018 22:16:36)

Офлайн

#9 Янв. 20, 2018 08:04:29

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Запрос в MySQL

Ну что тут скажешь? Тупо сковано - не наточишь, тупо рождено - не научишь.



Офлайн

#10 Янв. 20, 2018 12:44:01

sharkk
Зарегистрирован: 2015-12-06
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Запрос в MySQL

А я думал, чемпионами не рождаются, ими становяться. Ну да ладно, Ваша жизненая позиция мне ясна

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version