Сохранение postgresql timestamptz в качестве балла для перебранного отсортированного набора через redis-py: DataError - PullRequest
1 голос
/ 12 января 2020

Я сохраняю postgresql timestamptz для отсортированного набора redis с использованием redis-py.

timestamptz используется в качестве оценки, а данные используются в качестве значения.

Мне нужно отсортировать набор в порядке убывания. Но я не могу вставить данные в Redis. Я не знаю, как конвертировать в формат, поддерживаемый Redis. Вот код:

  cursor.execute("select current_timestamp;");
  timestamp_raw=cursor.fetchone()
  redis_client.zadd("stream",{data:timestamp_raw})

Ошибка ниже

.....\AppData\Local\Programs\Python\Python38-32\lib\site-packages\redis\connection.py", line 117, in encode
raise DataError("Invalid input of type: '%s'. Convert to a "redis.exceptions.DataError: Invalid input of type: 'tuple'. Convert to a byte, string or number first.

Как ее восстановить?

1 Ответ

1 голос
/ 13 января 2020

В Psycopg2 timestamptz возвращается как кортеж datetime и FixedOffsetTimezone.

Вам необходимо преобразовать кортеж в float, чтобы его можно было использовать в качестве счета.

См. Преобразование datetime.date в UT C отметка времени в Python

...