【问题标题】:How to translate this to SQLObject: SELECT DISTINCT columnname WHERE如何将此转换为 SQLObject:SELECT DISTINCT columnname WHERE
【发布时间】:2010-11-07 22:56:49
【问题描述】:

我一直在浏览sqlobject 和 sqlbuilder 文档和论坛,但我似乎无法掌握那里的信息。

我需要一个特定的 SQL 查询:

select distinct author from blogtable where keyword = "dust";

多个作者可以发布多个主题。

如果我使用原始 sql 查询,则该查询适用于 MySQL 数据库。但我似乎无法理解我必须做什么才能在 SQLObject 中正常工作。

我看到大量对 sqlbuilder 的引用,但手册页不是很广泛。 google 组中提供的示例也好像 SQLbuilder 是答案一样,但同样,没有我能理解的具体示例(针对我的问题)。

能否有精通 SQLObject 的人向我解释一下我是如何在 SQLObject 中实现上述 SQL 的? 如果不可能,我可以通过 SQLObject 以任何方式将原始 sql 传递给底层数据库吗?

【问题讨论】:

标签: python sql sqlobject


【解决方案1】:

我对 SQLObject 没有太多经验,但从docs 我推断它应该是这样的:

class Blog(SQLObject):
    class sqlmeta:
        table = 'blogtable'

    author = StringCol()
    keyword = StringCol()

Blog.select(Blog.q.keyword=='dust', distinct=True)

版本 2

select = Select(
    [Blog.q.author],
    Blog.q.keyword=='dust',
    distinct=True,
)

sql = connection.sqlrepr(select)

for author in connection.queryAll(sql):
    print author

【讨论】:

  • 感谢您抽出宝贵时间回复。虽然这当然是有效的,但在我的表格中,一个作者可以讨论很多事情,并且不止一个作者可以写同一个关键字 -> 上面将返回所有作者的列表,而我只想要一个不同作者的列表。
  • @Alex Boschmans:不幸的是,完整模型上的distinct=True 似乎只有在您加入其他表时才有帮助。在这种情况下,似乎唯一的解决方案是像我在更新的答案中那样手动选择它。
  • 感谢您的解决方案 - 它有效。我还从 Oleg 那里得到了更多解释(有关他在 sqlobject 新闻组上的回复的链接,请参阅我的问题下方的评论)。
猜你喜欢
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2011-02-23
  • 2022-01-22
  • 1970-01-01
相关资源
最近更新 更多