Учитывая таблицу под названием namespace_list
с столбцом с именем namespace_ids
.Оператор Psycopg2 "не существует: целое число [] = целое число" ошибка
У меня есть следующий запрос:
query = SELECT * FROM namespace_list WHERE namespace_ids = ANY(%s)
and application_id=%s
который я выполняющийся, как:
cur.execute(query, data)
и где данные:
data = ([1, 2], 1)
Я получаю следующее сообщение об ошибке:
operator does not exist: integer[] = integer at character 50\nHINT:
No operator matches the given name and argument type(s).
You might need to add explicit type casts.
Почему это не работает? Глядя на http://www.postgresql.org/message-id/[email protected]om и другие учебники по массивам Postgres, кажется, что у меня есть правильный запрос.
Я следую примеру http://initd.org/psycopg/docs/usage.html#adapt-list. Что-то не так с моим запросом или тем, как я использую массивы с psycopg2?
Почему? Psycopg2 говорит, что мы можем это сделать: 'ids = [10, 20, 30] cur.execute (" SELECT * FROM data WHERE id = ANY (% s); ", (ids,))'. Это именно то, что я делаю. – darksky
Мне нужно проверить точное совпадение. При выполнении запроса 'SELECT * FROM namespace_list WHERE namespace_ids = ARRAY% s и application_id =% s' с данными' ([1, 2], 1) ', я получаю:' синтаксическая ошибка в точке или рядом "," на символе 64' , Почему он не принимает массив сейчас? – darksky
Потому что это не то, что вы делаете. 'где id = ANY (% s)' работает, потому что слева у вас есть скаляр, а не массив. Но вы сказали, что namespace_ids - это массив ab, поэтому (см. Мой ответ) он не может работать. – fog