现在,我按照属性1对数据库中的数据进行排序。如果存在属性1值相同的不同项的纽带,则数据似乎是按其id排序的。但是,我想通过按desc(id)排序来打破平局。如果存在tie,如何更改数据库的默认排序条件?
谢谢!
发布于 2015-02-27 20:10:17
至少在SQLAlchemy v0.9.8中,通过mapper configuration可以做到这一点。
如果您有一个用户表,并且想要检索始终按fullname排序的记录,那么应该可以使用下面这样的方法:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)
__mapper_args__ = {
"order_by":fullname
}
def __repr__(self):
return "<User(name='%s', fullname='%s', password='%s')>" % ( self.name, self.fullname, self.password)发布于 2013-01-16 23:17:15
顺序完全由数据库决定,而不是SQLAlchemy。对于普通的SQL语句,您只需添加额外的ORDER BY子句,而在SQL中,您可以通过链接order_by方法来做同样的事情。例如:
for eq in session.query(Equipment).order_by(Equipment.model_id).order_by(Equipment.name).all():
print (eq)以最左边的为准--最大的是主排序。
https://stackoverflow.com/questions/14361264
复制相似问题