2

我有这个column_property检查允许用户获得多少信用:

select(
    [func.ifnull( func.sum( orders_table.c.quantity ), 0 )],
    orders_table.c.user_id == users_table.c.id
).where( and_(
    orders_table.c.date_added < now_unix(),
    orders_table.c.date_expires > now_unix(),
    orders_table.c.status == STATUS_COMPLETED
) ).label( 'userAllowedCredits' ),
deferred = True

now_unix()方法返回当前的unix时间戳,但问题是这个方法只加载一次,每次我调用这个userAllowedCredits属性时,查询搜索都基于我的应用程序启动时保存的相同初始值。我需要这个now_unix()方法在每次调用时返回实际的当前时间戳。

我有任何意义吗?

4

1 回答 1

0

您可能会在启动时存储此表达式,因此 now_unix() 仅在那时执行。从 SqlAlchemys 的角度来看,它只是一个值。如何解决这个问题,取决于您的用例。您可以使用now(),它将使用数据库内置now()函数。如果您必须使用自己的now_unix(),您仍然可以将其作为参数传递。

于 2013-09-29T17:37:12.180 回答