Update
Since version 1.1 the order_by
parameter in the mapper configuration has been deprecated. Instead Query.order_by must be used.
db.query(User).order_by(User.fullname)
# or in desc order
db.query(User).order_by(User.fullname.desc())
I left here the original answer for historial purposes:
This is possible by means of the mapper configuration.
If you have a user table and want to retrieve the records always ordered by fullname
something like this should works:
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 f"<User(id='{self.id}', name='{self.name}', fullname='{self.fullname}')>"
Default order_by
is ascending, if you want to reverse the order this can be used:
__mapper_args__ = {
"order_by": fullname.desc(),
}