Sqlalchemy 与 postgres。尝试获得“DISTINCT ON”而不是“独特”

发布于 2024-11-10 18:24:24 字数 636 浏览 4 评论 0原文

我需要生成这样的查询:

SELECT **DISTINCT ON** (article.code) article.code, article.title

首先,我尝试通过 ORM 不同的方法来生成它,并向其发送一个包含字段的列表。但这是行不通的。其次,我尝试通过 sqlalchemy.sql.select 来实现它 - 它还生成这样的 sql 查询:

SELECT DISTINCT article.code, article.title

我需要 SELECT **DISTINCT ON** (article.code)...

我看看源代码,并在 sqlalchemy.dialects.postgresql.base.PGCompiler.get_select_precolumns 代码中找到,用于生成如下结构:“DISTINCT ON” 但这个方法没有被调用。相反,这称为另一种方法 - sqlalchemy.sql.compiler.get_select_precolumns - 它没有为 DISTINCT 生成 DISTINCT ON 的代码,也许我应该配置我的会话以正确调用方法吗?

I need to generate query like this:

SELECT **DISTINCT ON** (article.code) article.code, article.title

First I try to make it via ORM distinct method and send it a list with fields. But it wont work. Second, I try to make it via sqlalchemy.sql.select - and it also generate sql query like this:

SELECT DISTINCT article.code, article.title

I Need SELECT **DISTINCT ON** (article.code)...

I look at source code and found in sqlalchemy.dialects.postgresql.base.PGCompiler.get_select_precolumns code for generating constructions like: 'DISTINCT ON'
But this method do not called. Instead of this called another method - sqlalchemy.sql.compiler.get_select_precolumns - it hasn't code for generating DISTINCT ON only for DISTINCT Maybe I should configure my session to called properly method?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

娇纵 2024-11-17 18:24:25

此错误报告表明 DISTINCT ON 在 SQLAlchemy 0.7 中可以正常工作+。我认为升级是适当的,除非您发现 0.7 中的错误。

解决方法。 。 。

  • 志愿者帮忙领取0.7包
    为 Ubuntu 做好准备。
  • 下载并安装
    来源。
  • 重写查询以避免 DISTINCT
    开。我不确定那是不是
    在最一般的情况下是可能的。

This bug report suggests that DISTINCT ON works correctly in SQLAlchemy 0.7+. I think an upgrade is in order, unless you've uncovered a bug in 0.7.

Workarounds . . .

  • Volunteer to help get the 0.7 package
    ready for Ubuntu.
  • Download and install from
    source.
  • Rewrite queries to avoid DISTINCT
    ON
    . I'm not sure whether that's
    possible in the most general case.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文