Sqlalchemy 中的用户定义变量支持

User-defined variables support in Sqlalchemy

SQLAlchemy 是否支持用户定义的变量?

https://dev.mysql.com/doc/refman/5.6/en/user-variables.html

问题:我正在尝试获取两个连续行之间的时间差。我可以通过使用用户定义的变量编写原始 SQL 查询来做到这一点。这可以在 SQLAlchemy 中完成而无需编写原始 SQL 查询吗?

我的table是这样的:

id user_id date
1. user_1  01-11-2021 00:00
2. user_1  01-11-2021 00:00
3. user_1  01-11-2021 00:01
4. user_2  01-11-2021 00:00

输出类似于

id user_id time_diff
1. user_1  NULL
2. user_1  0
3. user_1  1
4. user_2  NULL

执行所需任务且不使用 UDV 且适用于 MySQL 5.6 的 SQL 查询如下所示:

SELECT t1.*, TIMESTAMPDIFF(SECOND, t1.date, t2.date) time_diff
FROM table t1
LEFT JOIN table t2 ON t1.user_id = t2.user_id 
                  AND t1.date > t2.date
LEFT JOIN table t3 ON t1.user_id = t3.user_id 
                  AND t1.date > t3.date
                  AND t3.date > t2.date
WHERE t3.id IS NULL

逻辑:我们 select 2 行(按 date 值)为来自 table 的用户复制 t1t2(以及行t2 具有较早的 date 值),副本 t3 检查这些行是否真的相邻(它们之间没有第三行)。

此查询不使用 UDV,可以转换为 SQLAlchemy 语法。