Как указать psycopg2 параметр для массива для меток времени (datetimes)

Я хотел бы выполнить запрос PostgreSQL в Python с помощью psycopg2, который фильтрует столбцом типа timestamp without timezone. У меня есть длинный список позволенных значений для метки времени (а не диапазон), и psycopg2 удобно обрабатывает массивы, таким образом, я думал, что это должно работать:

SELECT somestuff
FROM mytable
WHERE thetimestamp = ANY (%(times)s)

times параметр является списком datetime объекты. Я также попробовал psycopg2.Timestamp(). Они оба переводят в WHERE thetimestamp = ANY (ARRAY['2009-07-06T00:00:00', '2009-07-07T00:00:00', ...]) и к сожалению который перестал работать со следующей ошибкой:

operator does not exist: timestamp without time zone = text
LINE 3: WHERE thetimestamp = ANY (ARRAY['2009-07-06T00:00:00', '2009-07-07T00:00:00', ...]
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

Я подтвердил это в pgAdmin также, таким образом, это не просто psycopg2. То, что, кажется, происходит, - то, что Пост-ГРЭС неявно не преобразует массив строк в массив меток времени. Это преобразует единственную прекрасную строку, и массив хорошо работает, если я явно добавляю ::timestamp к каждому элементу в pgAdmin, но я не знаю, как сделать это в psycopg2.

Каков лучший способ сделать это кроме упущения параметров DB-API и просто создания длинной строки меток времени вручную? Есть ли какой-либо способ, которым я могу заставить это бросать к корректному типу?

9
задан EMP 31 January 2011 в 11:13
поделиться