根据日期从 SQLAlchemy 中分块数据的最佳方法?

问题描述 投票:0回答:1

想象一下这张桌子:

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")

手动分块的一个大问题是,日期最初在技术上都是未知的,我是否必须首先进行查询以获取所有唯一日期,然后通过第二个查询运行每个日期以获取条目?每个日期要运行很多查询,而且效率似乎很低。任何帮助表示赞赏!

python python-3.x sqlalchemy flask-sqlalchemy
1个回答
0
投票

您可以在打印结果的代码中执行此操作:

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})
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.