Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39

Запрос с параметрами

31.10.2020, 12:19. Показов 5428. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые согруппники. Делаю запрос с параметром к базе

Python
1
query = ("SELECT  * FROM users WHERE usid=%")
Выдается ошибка , что неправильный синтаксис. Подскажите, пожалуйста, как надо писать?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
31.10.2020, 12:19
Ответы с готовыми решениями:

Послать POST запрос запрос с двумя и более параметрами?
Делаю так: string ProxyString = ""; string URI = @"http://www.easyprog.ru/test.php";; string...

запрос с параметрами
есть 2 таблицы: FurnitureCategory и Furniture. вот хранимая процедура для добавления экземпляра в Furniture: ALTER PROCEDURE...

Запрос c параметрами
Нужно выполнить авторизацию. в запросе подсчитывается сколько записей, соответствуют условию, что введенные логин и пароль соответствуют...

20
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
01.11.2020, 01:58
dashfomichewaya, так а параметр у вас где?
0
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
01.11.2020, 11:29  [ТС]
Параметр - следующая строка cur.execute(query,(us))
Так у него к этой строке вопросов нет. Он пишет:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%' at line 1
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
01.11.2020, 16:08
dashfomichewaya, всё верно. пайтон не знает, что знак процента надо заменять на вашу переменную, вот и не меняет
1
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
01.11.2020, 21:16  [ТС]
Так как надо писать правильно? Писала, кстати, точно по образцу.

Добавлено через 10 минут
Вот , вроде так query = ("SELECT * FROM users WHERE usid LIKE usid=%$",(us))
Только дальше не получается. Теперь в этом ошибка
cur.execute(query)

Добавлено через 10 минут
query = ("SELECT * FROM users WHERE usid LIKE usid=%$",(us))
cur.execute(query,(us))


cur.execute(query,(us))

AttributeError: 'tuple' object has no attribute 'encode'

Сейчас то что не так??
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
01.11.2020, 21:47
Цитата Сообщение от dashfomichewaya Посмотреть сообщение
Сейчас то что не так??
не так то, что вы не знаете синтаксиса пайтонна. используйте что-то вроде
Python
1
query = "SELECT * FROM users WHERE usid LIKE usid=" + us
вот только для всех знакомых мне СУБД этот запрос так же не валидный...
0
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
02.11.2020, 09:05  [ТС]
Простите, а как тогда написать правильно? А то Вы все загадками говорите...))) usid параметр, который будет получен до этого. И по нему надо выбрать нужную строчку. помогите пожалуйста, буду очень признательна. Работаю с MySql.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
02.11.2020, 09:45
Цитата Сообщение от dashfomichewaya Посмотреть сообщение
А то Вы все загадками говорите...
Я пробую навести вас на мысль, что надо сперва учебники почитать. По MySQL, по Python.

Добавлено через 1 минуту
Цитата Сообщение от dashfomichewaya Посмотреть сообщение
Простите, а как тогда написать правильно?
Так вы напишите, что найти запросом пытаетесь? Подстроку, точное совпадение, ещё что-то?
0
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
02.11.2020, 17:38  [ТС]
У меня есть таблица из двух колонок. Я должна получить строку по номеру из одной колонки , этому самому us. И этот us, он не известен заранее, он определится по ходу программы. Следовательно, это параметр. Значение которого и подставится в запрос. Мне кажется, задача примитивная , не понятен синтаксис. Если я подставляю в запрос фиксированное число, все отлично работает.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
02.11.2020, 18:04
не-не-не, я не о том спрашивал) что вы пытались получить вашим селектом? результат совпадения строки, подстроки, числа, фрагмента числа, ещё что-то?
0
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
02.11.2020, 18:52  [ТС]
Результат совпадения части строки. То есть если есть l name l usid l , то по usid я получу name, что мне и нужно. То есть я получу всю строку, а из нее выну name.
l l l
l l l
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
02.11.2020, 19:28
Python
1
query = "SELECT * FROM users WHERE usid LIKE \"%" + us+"%\""
0
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
02.11.2020, 19:38  [ТС]
Огромная благодарность. Ни на одном сайте я не нашла именно такой формы.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
02.11.2020, 19:52
dashfomichewaya, потому что это не форма, а конкатенация строк
1
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
03.11.2020, 10:13  [ТС]
Еще раз благодарю Вас. А где можно про это почитать? В спецификации по PyMsql такого нет. Там пример приводится параметрического запроса - ничего похожего.
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
03.11.2020, 10:17
dashfomichewaya, в книгах по ЯП) в данной ветке форума очень уважают Марка Лутца и его "Изучаем Python". Это ссылка на 4-е издание. Сейчас актуально 6-е. Но принципы от этого не меняются.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
03.11.2020, 10:33
SQL
1
SELECT * FROM users WHERE usid LIKE '%?%'
Добавлено через 35 секунд
Цитата Сообщение от Alli_Lupin Посмотреть сообщение
"%" + us+"%""
А так делать не надо - будет sql-инъекция
0
5042 / 1069 / 149
Регистрация: 29.01.2013
Сообщений: 6,241
03.11.2020, 10:40
Рыжий Лис, приведите фрагмент кода с запросом и cur.execute(), пожалуйста.
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5973 / 3735 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
03.11.2020, 10:50
Лучший ответ Сообщение было отмечено Alli_Lupin как решение

Решение

Python
1
2
sql = 'SELECT * FROM users WHERE usid LIKE "%%%s"'
cursor.execute(sql, (us,))
Внимание на %% - так заэкранировали процент, и на "лишнюю" запятую в списке параметров.
2
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
03.11.2020, 17:08  [ТС]
Продолжая разговор...
А скажите, пожалуйста, почему не работает такая вставка?

query = "INSERT INTO posts (usid,id_gr_otk,id_gr_kud,post,nameusid) VALUES(%s,%s,%s,%s,%s)"
args = (us1,otk,kud,text,nam1)
cur.execute(query,args)

Нет, ошибок не выдает, но и строчку не вставляет. Специально распечатываю args - все отлично, все значения имеются. За помощь буду благодарна. Опять же точно по шаблону.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.11.2020, 17:08
Помогаю со студенческими работами здесь

Запрос с параметрами
ADOQuery1.SQL.Add('SELECT * FROM Организации Order By :2 asc'); ADOQuery1.Parameters.ParamByName('2').value:=s; Почему этот запрос...

GET запрос с параметрами
Добый вечер,подскажите,как возможно осуществить такой get запрос с параметрами или наведите пример такого кода.Заранее спасибо!

Запрос с параметрами
Нужно создать поиск в базе данных с одной таблицей, по нескольким(8) полям. Я так понимаю, запрос с параметрами; параметры, на основе...

Запрос с параметрами
1.5 Создать запрос «Парижский луч» на поиск моделей из бутика «Парижский шик» по имени Лида и из бутика «Луч» с фамилией, ...

Запрос с параметрами?
Здравствуйте. Скажите правильно ли я написал запрос с параметрами? select * from mounth, vedtbl where mounth.period = vedtbl.key and...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru