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

Динамический SQL запрос

04.05.2022, 21:27. Показов 1993. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравия желаю, коллеги!

Прошу подсказать в каком копать направлении.

Имеется:
- html-форма с несколькими полями (н/р: name, age)
- база данных (sqlite) (таблица user содержит колонки id, name, age)
- flask

Из формы во flask я получаю значения полей в одноименные переменные.

Дальше необходимо сформировать запрос в SQL и вернуть данные, типа вот так:

Python
1
2
3
4
5
def get_data(conn, name, age):
    c = conn.cursor()
    c.execute(f"SELECT * FROM users WHERE name={name} AND age={age}")
    res = c.fetchall()
    return res
Но!

А что если не заполнено ни одно поле в форме - результатом поиска мы хотели бы возвращать все данные (без условия WHERE)
А что если будет заполнено только одно поле для поиска? Н/р, выбрать всех кому 35 лет. Тогда WHERE должен включать только age...

Коллеги, Как составить динамический (в части WHERE) запрос в SQL?

Извращения с проверками типа if request.form['age'] != : конкатенировать строки запроса'' мне кажется совершенно не удачным, особенно когда у тебя не 2, а 10 полей для поиска.

Ребята, очень надеюсь на Вашу помощь-консультацию! Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2022, 21:27
Ответы с готовыми решениями:

SQL запрос (динамический?)
Здравствуйте! Пытаюсь написать не сложную базу данных объектов недвижимости. Использую python + postgresql. Знакома я со всем этим всего...

Динамический запрос sql
Добрый день! Подскажите пожалуйста по созданию динамического запроса. Создаю запрос в C++ Builder 6 : ADOQuery1->Close(); ...

Несколько CheckBox и динамический SQL запрос
Всем доброго времени! Уважаемые форумчане! Прошу помощи в такой головоломке: Есть форма на которой находится огромное количество...

2
Эксперт Python
 Аватар для dondublon
4652 / 2072 / 366
Регистрация: 17.03.2012
Сообщений: 10,182
Записей в блоге: 6
05.05.2022, 17:02
Ну так и делать.
Python
1
2
3
4
5
if ничего не заполнено:
   'SELECT * FROM users' # безо всяких условий
else:
    condition = ' AND '.join(f'{param}={value}' for param in params if value present)
   sql0 = f'SELECT * FROM users WHERE {condigion}'
Как перебрать params - уж сами смотрите.
1
2 / 1 / 1
Регистрация: 05.04.2022
Сообщений: 10
07.05.2022, 02:04  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Ну так и делать.
Да, коллега! ) В тот день я что-то основательно притупил)))

К слову вот так реализовал:

Python
1
2
3
4
5
6
7
8
9
10
def get_data(conn, **kwargs):
    c = conn.cursor()
    filtered_fields = {k: v for k, v in kwargs.items() if v != ''}
    query = """SELECT *
               FROM users"""
    if filtered_fields:
        query += "WHERE " + " AND ".join([k + " = " + v for k, v in filtered_fields.items()])
    c.execute(query)
    res = c.fetchall()
    return res
Спасибо за внимание и подсказку!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.05.2022, 02:04
Помогаю со студенческими работами здесь

Динамический sql запрос с 4-мя независимыми условиями
Всем привет. Возникла следущая проблема-нужно составить динамический sql запрос, который может содержать до 4-х(включительно) независимых...

Как совместить динамический sql запрос с обычным?
я динамически определяю нужную мне таблицу, а потом хочу ее использовать, но не знаю, как это сделать. declare @Calendar nvarchar(max)...

Как создать динамический запрос SQL в процедуре?
Объясните пожалуйста мне как создать подобный запрос? Перечитал кучу статей, везде написано по разному. Исправьте ошибки и допишите...

Это динамический SQL или PL/SQL?
declare type namelist is table of varchar2(15); enames namelist; bonus_amt number := 50; sql_statement varchar(200); ...

Как передать значение из dateTimePicker в запрос sql Microsoft SQL Server
Здравствуйте! Подскажите пожалуйста,как правильно передать значения из dateTimePicker в запрос sql ? Я пока что не очень силен во всем...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
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