使用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
相关产品推荐
相关产品推荐

