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

时间:2015-07-29 21:26:40

标签: python mysql sqlalchemy

这与Using a SQLAlchemy Integer field to create a timedelta object for comparison不同,因为该线程在询问添加时间时要使用的函数。该函数是针对他们的MySQL版本找到的,但用户的后续编辑偏离了他们原来的问题并且没有回答这个问题。

我正在使用MySQL。我想使用一个名为timestampadd的函数。 https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_timestampadd它的第一个参数是我添加的时间单位,EG: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周围的引号?

1 个答案:

答案 0 :(得分:0)

为了按原样传递unit参数关键字,请使用text()构造:

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