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

Как подставить значение переменной в filter (SQLAlchemy)?

09.09.2020, 03:24. Показов 2227. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Осваиваю сейчас SQLAlchemy для использования в телеграм-боте. Не получается передать значение переменной в условие поиска:
Python
1
2
existed_alias = session.query(Aliases).filter(
                            Aliases.categorie == categorie, Aliases.alias == alias)
при попытке посмотреть, что возвращает запрос, получаю:
Code
1
2
3
SELECT aliases.id AS aliases_id, aliases.categorie AS aliases_categorie, aliases.alias AS aliases_alias 
FROM aliases 
WHERE aliases.categorie = ? AND aliases.alias = ?
Не совсем понимаю, почему sqlalchemy не видит значения переменных и не подставляет их в запрос?
Значения переменных строкового типа, определены буквально за строчку до запроса.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.09.2020, 03:24
Ответы с готовыми решениями:

Как подставить значение переменной var1 чтобы читалось его значение
Подскажите, не могу понять как подставить значение переменной var1 чтобы читалось его значение : dim T1$ Dim var1 As Integer Dim var2...

Как подставить значение переменной
Как правильно написать, чтоб вместо send_form подставлялось значение переменной определенной в первой строке? var send_form =...

Как в time.sleep() подставить значение переменной?
Здравствуйте! У меня возникла такая проблема(если такову можно так назвать): я хочу подставить в time.sleep() значение переменной. ...

2
431 / 302 / 90
Регистрация: 03.12.2015
Сообщений: 741
09.09.2020, 19:23
Цитата Сообщение от Dancing_god Посмотреть сообщение
Не совсем понимаю, почему sqlalchemy не видит значения переменных и не подставляет их в запрос?
Значения переменных строкового типа, определены буквально за строчку до запроса.
SqlAlchemy про переменные знает и значения переменных видит. Но выводит "обобщенный" SQL запрос, который чуть позже будет "подстроен" к конкретной БД (ведь SqlAlchemy умеет работать с разными БД).

Увидеть конкретный запрос, который будет отправлен в БД можно, например, так:
Python
1
2
3
from sqlalchemy.dialects import postgresql
statement = str(existed_alias.statement.compile(dialect=postgresql.dialect())
print(statement)
0
15 / 2 / 1
Регистрация: 18.09.2015
Сообщений: 227
09.09.2020, 23:37  [ТС]
Цитата Сообщение от vrm2 Посмотреть сообщение
Увидеть конкретный запрос, который будет отправлен в БД можно, например, так:
Спасибо за разъяснения.
Еще такой вопрос, sqlalchemy умеет работать с экземплярами классов в условиях фильтрации, как это например можно сделать в django orm?
Т.е. в примере выше, если поле Aliases.category ссылается по типу ForeignKey на таблицу Categories, что подставлять для проверки условия равенства?:
1. Экземпляр класса Categories
2. Значение первичного ключа этого экземпляра
И что во втором случае, если он верен, прописывать в названии самой колонки? Достаточно будет Aliases.category, чтобы sqlalchemy сам прошел в этой колонке к классу, на который она ссылается, и проверял условие по первичному ключу этого класса, или надо явно прописывать Aliases.category.category, где последнее category - поле с ограничением primary_key? Или же вообще нужно делать join в явном виде?
Просто после довольно удобной и интуитивной django orm логика работы sqlalchemy не совсем привычна.

Добавлено через 2 часа 33 минуты
Все, разобрался вроде. Проблема была не в подстановке значений, а в том, что результат запроса я не получал через метод all(). И соответственно для пустого результата запроса ожидал увидеть не пустой список, а None.
Единственное остался вопрос, как в sqlalchemy поддерживается целостность данных? Я спокойно могу создать новую запись, передав текстовое значение в поле типа ForeignKey, что немного сбивает с толку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.09.2020, 23:37
Помогаю со студенческими работами здесь

Как подставить значение своей переменной в форму yii2?
как подставить значение своей переменной в форму yii2 - прям кодом - если в пхп это делается просто <input type="text"...

Как подставить в выражение отдельной функции, вместо x, значение переменной a1 ?
В результате на экран должно выводиться число х1 = 17. Помогите его получить, исправив код. при a1 = 4 эта a1 подставляется на место...

Как подставить в значение переменной, данные взятые из таблицы mysql
Здравствуйте. (C# VS2013)Есть такая задача, запускать exe фаил с параметрами, один из которых должен быть переменной, значение которой...

FindFirstFileW. Как подставить значение переменной типа string в функцию?
Здравствуйте, форумчане! Будьте добры и помогите понять один нюанс. Например есть у меня такие строки: ...

Подставить значение переменной
Для элементов формы документа: ИмяПункта1, ИмяПункта2...ИмяПункта5, нужно поставить свойство видимость в значении ложь. Подскажите, как это...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru