【问题标题】:Flask SqlAlchemy unable to get distinct valuesFlask SqlAlchemy 无法获得不同的值
【发布时间】:2020-04-20 17:38:40
【问题描述】:

我需要从一个名为 Listing 的表中获取最后 100 条插入的不同记录。 其背后的数据库是Mysql,使用Flask和Sql-alchemy。 我需要应用不同的列是密钥字符串。 以下是我尝试过的查询。

db.session.query(Listing.category, Listing.subcategory, Listing.place, Listing.time, Listing.created_at, Listing.keystring).distinct(Listing.keystring).order_by(Listing.created_at).limit(100)

似乎没有应用 distinct。

我注意到,如果我从查询中删除 created_at,我会得到不同的值,但是我无法对结果进行排序。

【问题讨论】:

  • 试试.order_by(Listing.keystring, Listing.created_at)
  • 仍然得到相同的结果
  • 这可能有效db.session.query(...).order_by(Listing.created_at).from_self().distinct(Listing.keystring).limit(100)
  • 很遗憾不是,这意味着我的模型有问题?这不应该是一个非常简单的查询吗?也许我错过了什么......
  • distinct 和 order by 的组合总是令人头疼,也许在你的情况下它在 MySQL 方面检查这个stackoverflow.com/a/34691355/5274713

标签: python sqlalchemy


【解决方案1】:

经过几次尝试,我不得不将查询更改为以下内容:

db.session.query(Listing.category, Listing.subcategory, Listing.place, Listing.time, Listing.created_at, Listing.keystring).order_by(Listing.created_at.desc()).distinct(Listing.keystring).limit(100)

希望这可以为其他人节省一些时间。

【讨论】:

    猜你喜欢
    • 2022-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2018-10-02
    • 2020-09-03
    • 1970-01-01
    相关资源
    最近更新 更多