我对sqlalchemy有点问题。我正在创建一个类似的查询:
db.session.query(Case.court_id).filter(
Case.last_updated.between(start, end)).filter(
(Case.last_scraped_by != "RSS") |
(Case.last_scraped_by.is_(None))).order_by(Case.last_updated.desc()).distinct()
这导致以下SQL:
SELECT DISTINCT `case`.court_id AS case_court_id, `case`.last_updated AS
case_last_updated FROM `case` WHERE `case`.last_updated BETWEEN %s AND %s
AND (`case`.last_scraped_by != %s OR `case`.last_scraped_by IS NULL) ORDER BY `case`.last_updated DESC
这里的问题是我只想从数据库中找到不同的Case.court_id
,但是由于Query.order_by
更改列列表我得到的结果不正确,我已经搜索了sqlalchemy的文档,但到目前为止找不到明确控制所选列的方法。所以我的问题是,明确控制所选列的最佳方法是什么?
答案 0 :(得分:2)
这一个怎么样(将distinct
移到select
部分):
db.session.query(Case.court_id.distinct()).filter(
Case.last_updated.between(start, end)).filter(
(Case.last_scraped_by != "RSS") |
(Case.last_scraped_by.is_(None))).order_by(Case.last_updated.desc())
但是,可能需要数据库引擎来允许这样的结构。