Не получается обновить дату в таблице

Хочу обновить дату в таблице. Вот отрывок кода:

today=datetime.date.today()
salary = input('Введите сумму зачисления:') 
id = int(input('Введите id сотрудника'))
cursor.execute(f'''UPDATE public.salary SET  dttm = {today}, salary = {salary}where employee_id = {id}''')
connection.commit()

Есть колонки: salary, employee_id, dttm (dttm - в формате text).

Пытаюсь сделать обновление dttm и salary, но после выполнения кода, salary меняется на указанное, а dttm становится 1990.

В чём проблема?

Пробовал today=datetime.date.today().strftime('%Y-%m-%d'), тоже не помогает.


Ответы (1 шт):

Автор решения: MaxU

SQL надо "параметризовать" - иначе вы открываете дыру в безопасности и даете возможность использовать SQL Injections. Кроме того при использовании параметров SQL литералы передаются SQL серверу с правильным типом данных - это должно решить проблему с датами.

Попробуйте так:

sql = '''UPDATE public.salary SET  dttm = %s, salary = %s where employee_id = %s'''
parms = [today, salary, id]
cursor.execute(sql, parms)
→ Ссылка