【Flask-SQLAlchemy】 ORDER BY

Flask

ORDER BYで取得順を変更する

テーブル定義からテーブル作成

app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///PFCManagement.db"
app.config["SECRET_KEY"] = os.urandom(24)
db = SQLAlchemy(app)

login_manager = LoginManager()
login_manager.init_app(app)

class PFC_LIST(UserMixin, db.Model):
    id = db.Column(db.String(20), primary_key=True)
    seq = db.Column(db.Integer, primary_key=True)
    meal_date = db.Column(db.String(10), nullable=True)
    calorie = db.Column(db.Integer, nullable=True)
    protein = db.Column(db.Integer, nullable=True)
    fat = db.Column(db.Integer, nullable=True)
    carbohydrate = db.Column(db.Integer, nullable=True)
    dietary_fiber = db.Column(db.Integer, nullable=True)
    salt = db.Column(db.Integer, nullable=True)
    del_flg = db.Column(db.String(1), nullable=False, default="0")
    created_at = db.Column(
        db.DateTime, nullable=False, default=datetime.now(pytz.timezone("Asia/Tokyo"))
    )
    update_at = db.Column(db.DateTime, nullable=True)

ORDER BY

@app.route("/PFClist")
@login_required
def PFClist():
    #idをrequestから取得
    get_id = request.form.get("id")
    #PFC_LISTから「PFC_LISTのid」と「requestから取得したid」が一致する行をmeal_dateの降順で取得
    get_pfc_list = PFC_LIST.query.filter(PFC_LIST.id == get_id).order_by(
        PFC_LIST.meal_date.desc()
    )

.order_by(クラス名.列名)で指定した列名の昇順で取得できる
降順にしたい場合は、.order_by(クラス名.列名).desc()で降順になる

また、.order_by(クラス名.列名, クラス名.列名)で並び順の条件を複数にすることもできる

例:PFC_LIST.query.order_by(PFC_LIST.meal_date.desc(), PFC_LIST.protein.desc())

meal_dateprotein
2025/05/2050
2025/05/2040
2025/05/2030
2025/05/1950
2025/05/1940