如何将其转换为SQLObject:SELECT DISTINCT columnname WHERE

1 投票
1 回答
1551 浏览
提问于 2025-04-16 06:43

我一直在看sqlobject和sqlbuilder的文档以及论坛,但我就是搞不懂里面的信息。

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

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

多个作者可以在多个主题上发帖。

这个查询在MySQL数据库中用原始的SQL查询可以正常工作。但我就是不明白该怎么在SQLObject中正确实现它。

我看到很多关于sqlbuilder的参考资料,但手册页面并不是很详细。谷歌小组里提供的例子也好像在说sqlbuilder是解决方案,但同样没有我能理解的具体例子(针对我的问题)。

有没有对SQLObject很熟悉的人能告诉我,怎么把上面的SQL在SQLObject中实现?如果不行的话,我能不能通过SQLObject以某种方式把原始SQL传递给底层数据库?

1 个回答

1

我对SQLObject的经验不多,但从文档中我推测它应该是这样的:

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

撰写回答