#python #sql #datetime #sqlalchemy
Вопрос:
У меня есть следующая функция для проверки маркера сброса в таблице 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…сумасшедший пропустил это и потратил несколько часов, пытаясь понять это