python sqlalchemy dynamic order_by

时间:2014-01-03 12:58:49

标签: python sqlite sqlalchemy

如何根据变量动态设置顺序,如asc或desc,用于sqlite数据库的sqlalchemy查询?

伪代码如下:

sort_order = "asc"

sql_session.query(ResultsDBHistory).order_by(sort_order(ResultsDBHistory.postsize)).limit(max_items_shown)

如果我尝试这个,它将不接受该字符串。

1 个答案:

答案 0 :(得分:3)

您可以在.asc()上访问.desc()ResultsDBHistory.postsize方法作为属性:

order = 'asc'
column_sorted = getattr(ResultsDBHistory.postsize, order)()
sql_session.query(ResultsDBHistory).order_by(column_sorted).limit(max_items_shown)

因为列包含ascdesc方法。