我们在一个带有遗留数据库的项目中使用 SQLalchemy。数据库具有函数/存储过程。过去我们使用原始 SQL,我们可以将这些函数用作查询中的过滤器。
如果可能的话,我想对 SQLAlchemy 查询做同样的事情。我已经阅读了@hybrid_property,但是其中一些函数需要一个或多个参数,例如;
我有一个用户模型,它连接到一堆历史记录。SUM(credit) - SUM(debit)
该用户的这些历史记录有一个日期和一个借方和贷方字段,因此我们可以通过在给定日期之前查找用户在特定时间点的余额。
我们有一个名为dbo.Balance(user_id, date_time)
. 我可以使用它来检查用户在给定时间点的余额。
我想将此用作查询中的标准,以仅选择在特定日期/时间有负余额的用户。
selection = users.filter(coalesce(Users.status, 0) == 1,
coalesce(Users.no_reminders, 0) == 0,
dbo.pplBalance(Users.user_id, datetime.datetime.now()) < -0.01).all()
这当然是一个无效的示例,只是为了让您了解我想做的事情的要点。解决方案看起来是使用混合属性,但正如我上面提到的,这些只能在没有参数的情况下工作(因为它们是属性,而不是方法)。
欢迎任何关于如何实现这样的东西(如果可能的话)的建议。
谢谢,