You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Flask-SQLAlchemy获取Post表最后新增记录报错求解决

解决Flask-SQLAlchemy获取最后一条记录的报错问题

错误原因

你遇到的AttributeError: 'int' object has no attribute 'desc',是因为代码中Post.id被识别为整数类型而非模型的字段对象,导致无法调用desc()排序方法。通常是由于模型定义不规范,或是误将实例属性当成类属性调用导致的。

正确写法

以下两种方法都可以正确获取Post表中新增的最后一条记录:

方法一:使用SQLAlchemy的desc()函数

导入desc函数后,直接传入字段进行排序:

from sqlalchemy import desc
from your_app import Post  # 替换为你的Post模型实际导入路径

last_post = Post.query.order_by(desc(Post.id)).first()

方法二:确保模型字段定义正确后调用字段的desc()方法

先检查你的Post模型是否正确定义了id字段(必须是类属性,且为db.Column类型):

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    # 其他业务字段(如title、content等)...

如果模型定义规范,也可以直接使用以下代码:

last_post = Post.query.order_by(Post.id.desc()).first()

补充方案

如果你的id是自增主键,还可以通过查询最大id值来定位最后一条记录:

from sqlalchemy import func

max_id = db.session.query(func.max(Post.id)).scalar()
last_post = Post.query.get(max_id)

内容的提问来源于stack exchange,提问作者user21308041

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 21:45:02