【发布时间】:2021-07-15 03:26:17
【问题描述】:
我有以下疑问:
SELECT sum(x), sum(y)
FROM stats s1
WHERE fk_id = :id
AND EXISTS (
SELECT
FROM stats s2
WHERE s2.fk_id = s1.fk_id
AND s2.datetime::date = (now() - '1 day'::interval)::date
)
第二个条件确保有昨天的统计数据。否则不返回任何结果。
当我从 SQL 客户端(即 DBeaver)执行它时,它会按预期返回 1 行,例如12.3, 45.6。当我从 SQLAlchemy 执行查询时,即session.execute(query, {"id": id}).first(),它返回(None, None)。相同的查询,相同的数据库,相同的 id。
我尝试在没有 EXISTS 条件的情况下从 SQLAlchemy 运行它,在这种情况下,它返回 1 行。所以这与从不同地方执行时的第二个条件有关。
为什么从 SQL 客户端执行 EXISTS 条件返回 TRUE 而从 SQLAlchemy 执行 FALSE?
【问题讨论】:
标签: python sql postgresql sqlalchemy psycopg2