In SQLAlchemy, you can use the order_by() function to sort query results in ascending (default) or descending order. Here’s how you can do it:
Sorting in Ascending Order (Default Behavior)
By default, order_by() sorts data in ascending order (ASC).
from sqlalchemy import create_engine, Column, Integer, String, desc
from sqlalchemy.orm import sessionmaker, declarative_base
# Database setup
Base = declarative_base()
engine = create_engine('sqlite:///example.db')
Session = sessionmaker(bind=engine)
session = Session()
# Sample model
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# Retrieve data in ascending order (default)
users_asc = session.query(User).order_by(User.age).all()
# Print results
for user in users_asc:
print(user.name, user.age)
✅ This sorts users by age in ascending order (oldest first).
Sorting in Descending Order
To retrieve data in descending order (DESC), use desc() from SQLAlchemy.
from sqlalchemy import desc
# Retrieve data in descending order
users_desc = session.query(User).order_by(desc(User.age)).all()
# Print results
for user in users_desc:
print(user.name, user.age)
✅ This sorts users by age in descending order (youngest first).
Sorting by Multiple Columns
You can also sort by multiple columns:
users = session.query(User).order_by(User.age.desc(), User.name.asc()).all()
✅ This sorts by age (descending), then by name (ascending) if ages are the same.