删除SQLAlchemy生成的查询中的引号



这与使用SQLAlchemy Integer字段创建timedelta对象进行比较不同,因为该线程在添加时间时询问使用哪个函数。这个函数是为他们的MySQL版本找到的,然而,用户的后续编辑偏离了他们最初的问题,没有回答这个问题。

我正在使用MySQL。我想使用一个叫做timestampadd的函数。https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampadd它的第一个参数是我要添加的时间单位,例如:MINUTE, HOUR, DAY。

在编写SQLAlchemy查询时,我不能执行

这样的操作
datetime_now = datetime.datetime.utcnow()
Item.query.filter(Item.created <= sqlalchemy.func.timestampadd(MINUTE, 1, datetime_now))

如果我这样做,我将得到MINUTE的未定义错误。我也试过:

Item.query.filter(Item.created <= sqlalchemy.func.timestampadd('MINUTE', 1, datetime_now))

但是这将生成带有引号的timestampadd调用,这会导致MySQL错误。如何在生成的查询中删除MINUTE周围的引号?

为了传递unit参数关键字,使用text()结构:

Item.query.filter(
    Item.created <= sqlalchemy.func.timestampadd(text('MINUTE'), 1, datetime_now))