вы хотите передать кортеж в cur.execute()
, вы передаете одно значение (которое отличается от «кортежа», содержащего одно значение)
также, почему бы не сделать дату / времячто-то в Postgres, он неплохо справляется с этим.например, ваш запрос может быть что-то вроде:
cur.execute("""SELECT * FROM "table" WHERE publishedAt > now() - interval '1 day'""")
, иначе вы можете выполнить вычисления даты в базе данных с помощью:
cur.execute("""SELECT * FROM "table" WHERE publishedAt > %s - interval '1 day'""", (dt.datetime.now(),))
(обратите внимание на дополнительную запятую в конце) или сделатьвычисление в Python с:
cur.execute("""SELECT * FROM "table" WHERE publishedAt > %s""", (dt.datetime.now() - dt.timedelta(days=1),))
, если вы хотите установить верхний предел дат, вы, вероятно, захотите сделать что-то вроде:
now = dt.datetime.now()
cur.execute("""SELECT * FROM "table" WHERE publishedAt BETWEEN %s AND %s""", (now - dt.timedelta(days=1), now))
(обратите внимание, что Python знает, что скобки указываюткортеж, поэтому запятая не нужна)