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

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

31.10.2020, 12:19. Показов 5347. Ответов 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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
02.11.2020, 19:52
dashfomichewaya, потому что это не форма, а конкатенация строк
1
0 / 0 / 1
Регистрация: 24.02.2020
Сообщений: 39
03.11.2020, 10:13  [ТС]
Еще раз благодарю Вас. А где можно про это почитать? В спецификации по PyMsql такого нет. Там пример приводится параметрического запроса - ничего похожего.
0
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
5037 / 1064 / 149
Регистрация: 29.01.2013
Сообщений: 6,214
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru