SQLAlchemy:如何永久地按列排序表?

时间:2015-05-28 10:04:31

标签: python sqlalchemy

我不确定之前是否已经回答过这个问题,我没有得到任何关于快速搜索的内容。

我的表是以随机顺序构建的,但此后它很少被修改。我经常从表中选择,在每个选择中我需要通过同一列来排序查询。现在有没有办法按列永久地对表进行排序,这样就不需要为每个选择再次完成它?

2 个答案:

答案 0 :(得分:3)

您可以添加按所需列排序的索引。数据将根据该索引进行预分类。

答案 1 :(得分:1)

您只能在一个地方定义它,并重复使用它 每个查询:

def base_query(session, what_for):
    return session.query(what_for).order_by(what_for.rank_or_whatever)

根据需要展开,然后对于所有但非常复杂的查询,您可以像这样使用:

some_query = base_query(session(), Employee).filter(Employee.feet > 3)

生成的查询将按Employee.rank_or_whatever排序。如果你总是在询问同样的问题,当然,你不会把它作为论据。

编辑:如果你能以某种方式定义一个"永久性"您的桌子上的订单是由发动机观察而没有发出ORDER BY我认为这将是一个特定于您使用的RDBMS的实施功能,并且只是方便。 内部它使得DBMS无法强制如何存储数据,因为通过使用{{1}可以轻松地以特定顺序检索此数据 - 强制执行特定订单可能会降低整体性能。