sqlalchemy.exc.ArgumentError:此 text() 构造未定义名为“current_time”的绑定参数

Posted

技术标签:

【中文标题】sqlalchemy.exc.ArgumentError:此 text() 构造未定义名为“current_time”的绑定参数【英文标题】:sqlalchemy.exc.ArgumentError: This text() construct doesn't define a bound parameter named 'current_time' 【发布时间】:2021-06-12 20:58:48 【问题描述】:

我有以下函数来检查表reset_codes中的重置令牌使用sqlalchemy和数据库包(https://pypi.org/project/databases/)

def check_reset_token(reset_token: str):
    query = "SELECT * FROM reset_codes WHERE is_active=True AND reset_code=:reset_token " 
    "AND expired_in >= :current_time - INTERVAL '60 minutes'"
    return database.fetch_one(query, values="reset_token": reset_token, "current_time": datetime.utcnow())

我收到以下错误,不知道如何解决

sqlalchemy.exc.ArgumentError: This text() construct doesn't define a bound parameter named 'current_time'

这是日期时间的expired_in 列的值

|         exired_in             |
| ----------------------------- |
| 2021-06-12 19:19:53.007063    |

所以不确定这是否是问题所在:current_time - INTERVAL '60 minutes'

【问题讨论】:

【参考方案1】:

已修复,是一个错字!

def check_reset_token(reset_token: str):
    query = "SELECT * FROM reset_codes WHERE is_active=True AND reset_code=:reset_token AND expired_in >= :current_time - INTERVAL '60 minutes'"
    return database.fetch_one(query, values="reset_token": reset_token, "current_time": datetime.utcnow())

sql 查询有 " " 并转到第 2 行...疯狂错过了它并花了几个小时试图弄清楚

【讨论】:

以上是关于sqlalchemy.exc.ArgumentError:此 text() 构造未定义名为“current_time”的绑定参数的主要内容,如果未能解决你的问题,请参考以下文章