【发布时间】:2013-10-22 11:50:09
【问题描述】:
我们在一个带有旧数据库的项目中使用 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()
这当然是一个无效的示例,只是为了让您了解我想做的事情的要点。解决方案看起来是使用混合属性,但正如我上面提到的,这些只能在没有参数的情况下工作(因为它们是属性,而不是方法)。
欢迎任何关于如何实现这样的东西(如果可能的话)的建议。
谢谢,
【问题讨论】:
标签: python sql-server sqlalchemy