【问题标题】:Remove quotes in query generated by SQLAlchemy删除 SQLAlchemy 生成的查询中的引号
【发布时间】:2019-02-14 15:06:16
【问题描述】:

这与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 它的第一个参数是我要添加的时间单位,例如: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 周围的引号?

【问题讨论】:

    标签: python mysql sqlalchemy


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-28
      • 2014-05-08
      • 2018-09-26
      • 1970-01-01
      相关资源
      最近更新 更多