Сохранение временной метки postgresql в качестве оценки для отсортированного набора redis через redis-py: DataError

Я храню временную метку postgresql в отсортированном наборе 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.

Как его разлюбить?


person TheGuardener    schedule 12.01.2020    source источник


Ответы (1)


В Psycopg2 timestamptz возвращается как кортеж даты и времени и FixedOffsetTimezone.

Вам нужно преобразовать кортеж в число с плавающей запятой, чтобы его можно было использовать в качестве оценки.

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

person LeoMurillo    schedule 12.01.2020