Динамическое упорядочение по предложению с использованием языка SQL-выражений sqlAlchemy - PullRequest
4 голосов
/ 03 мая 2011

Я использую язык выражений sqlAlchemy SQL следующим образом:

col_name = 'variable_col'
metadata = MetaData(db)
myTable = Table('table_name', metadata,
              Column(col_name, Integer))
s = myTable.select()
for rec in conn.execute(s):

Я пытаюсь упорядочить результаты по одному столбцу в наборе результатов.

Я пытался использовать следующее:

s.order_by(desc(myTable.c))
s.order_by(desc(myTable.c[0]))

Я даже пытался создать объект Column и упорядочить по нему:

temp_col = Column(col_name, Integer)
s.order_by(desc(temp_col))

Все безрезультатно. Результаты возвращаются так, как будто нет условия order_by.

Любая помощь будет оценена.

Ответы [ 2 ]

4 голосов
/ 04 мая 2011

order_by() метод в SQLAlchemy не изменяет запрос, к которому он применяется, но возвращает новый запрос.Также столбцы доступны по имени, а не по индексу.Используйте что-то вроде следующего:

s = s.order_by(myTable.c[col_name].desc())
2 голосов
/ 21 июня 2017
from sqlalchemy import create_engine, desc, asc
from sqlalchemy.orm import sessionmaker, Query
# setup the session here...
sort_column = "tables_column_name"
sort_dir = "desc"  # or "asc"
sort = asc(sort_column) if sort_dir == "desc" else desc(sort_column)
query = Query([...]).filter(...)
query = query.order_by(sort)
results = session.execute(query).fetchall()

Я думаю, что это более полный ответ на динамическую сортировку / упорядочивание результатов SQL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...