想象一下这张桌子:
class Entries(db.Model):
__tablename__ = "entries"
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(Text)
created_time = Column(Datetime)
在数据库中我有以下数据:
id data created_time
---------------------------
1 entry1 2024-10-29 01:55:20
2 entry2 2024-10-29 12:44:50
3 entry3 2024-10-29 08:47:10
4 entry4 2024-12-01 14:30:19
5 entry5 2024-12-01 10:58:36
6 entry6 2024-12-05 22:15:48
我想显示数据按日期分组,并按时间降序排序。
例如,这是按最新日期排序的,并且在每个日期内显示按最新排序的条目数据:
Dec 05 2024
entry6
Dec 01 2024
entry4
entry5
Oct 29 2024
entry2
entry3
entry1
有没有一种方法可以在SQLAlchemy中轻松查询以这种方式获取数据?
如果没有,我必须自己手动分块,我有这个查询:
data = db.session.query(Entries).order_by(text("created_time DESC")).all()
我怎样才能分块
data
,以便我可以轻松地做类似的事情:
for date in data:
print(date.created_time)
for entry in date.entries:
print(entry.name)
print("\n")
手动分块的一个大问题是,日期最初在技术上都是未知的,我是否必须首先进行查询以获取所有唯一日期,然后通过第二个查询运行每个日期以获取条目?每个日期要运行很多查询,而且效率似乎很低。任何帮助表示赞赏!
您可以在打印结果的代码中执行此操作:
last_date = None
for entry in data:
if entry.created_time.date() != last_date:
print(entry.created_time.date())
last_date = entry.created_time.date()
print(f' {entry.data})