我正在使用 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):
Run Code Online (Sandbox Code Playgroud)
我想要完成的是按结果集中唯一的一列对结果进行排序。
我尝试使用以下方法:
s.order_by(desc(myTable.c))
s.order_by(desc(myTable.c[0]))
Run Code Online (Sandbox Code Playgroud)
我什至尝试创建一个 Column 对象并按以下顺序排序:
temp_col = Column(col_name, Integer)
s.order_by(desc(temp_col))
Run Code Online (Sandbox Code Playgroud)
一切都无济于事。返回结果就像没有 order_by 子句一样。
任何帮助,将不胜感激。
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()
Run Code Online (Sandbox Code Playgroud)
我认为这是对动态排序/排序 SQL 结果的更完整的答案。
order_by()
SQLAlchemy 中的方法不会修改它所应用的查询,而是返回一个新查询。列也是按名称访问的,而不是索引。使用类似以下内容:
s = s.order_by(myTable.c[col_name].desc())
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3197 次 |
最近记录: |