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

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

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


多位作者可以发表有关多个主题的文章。

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

我看到了对sqlbuilder的大量引用,但是手册页不是很广泛。 google小组中提供的示例也像SQLbuilder那样回答,但同样,我无法理解任何具体示例(针对我的问题)。

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

最佳答案

我没有使用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

10-07 18:30