MyTetra Share
Делитесь знаниями!
Вывод настоящего SQL-запроса в SQLAlchemy
24.03.2018
15:51
Автор: br0ke
Текстовые метки: python, sql, sqlalchemy, orm, alchemy, query, db, dbms, postgre, postgres, postgresql
Раздел: Информационные технологии - Python - Библиотеки - SQLAlchemy

Чтобы получить SQL-запрос, который создает SQLAlchemy, можно просто конвертировать объект запроса в строку:


>>> q = DBSession.query(model.Name).distinct(model.Name.value) \

.order_by(model.Name.value)

>>> print str(q)

SELECT DISTINCT name.id AS name_id, name.value AS name_value

FROM name ORDER BY name.value


Иногда в случае использования специфичных для СУБД диалектов SQL такой способ будет выводить запрос на "общем", "обычном" SQL, а в СУБД будет отправлять другой, настоящий запрос с использованием диалекта. В таком случае нужно указать конкретный диалог для компиляции запроса.


>>> from sqlalchemy.dialects import postgresql

>>> print str(q.statement.compile(dialect=postgresql.dialect()))

SELECT DISTINCT ON (name.value) name.id, name.value

FROM name ORDER BY name.value

 
MyTetra Share v.0.52
Яндекс индекс цитирования