Запрос Postgres для поиска данных из таблицы, где тип столбца — json, используя IN со списком?Python

Программы на Python
Ответить
Anonymous
 Запрос Postgres для поиска данных из таблицы, где тип столбца — json, используя IN со списком?

Сообщение Anonymous »

Я использую базу данных postgres, я работаю с кодом fastapi, где хочу найти данные из базы данных, используя указанные теги. Столбец тегов имеет тип json, а входными данными будет список Python. Я беру список Python от пользователя и пытаюсь отфильтровать данные, используя этот список из базы данных. но это не работает.
Вот запрос:

Код: Выделить всё

await cur.execute(f"""
SELECT *
FROM demo_data.demo_assets
WHERE ("Tags" ->> 'category') IN ({','.join(['%s'] * len(data.category))})
OR ("Tags" ->> 'domain') IN ({','.join(['%s'] * len(data.domain))})
OR ("Tags" ->> 'technology') IN ({','.join(['%s'] * len(data.technology))})
OR ("Tags" ->> 'topic') IN ({','.join(['%s'] * len(data.topic))})
OR ("Tags" ->> 'author') IN ({','.join(['%s'] * len(data.author))})
OR ("Tags" ->> 'platform') IN ({','.join(['%s'] * len(data.platform))})
OR ("Tags" ->> 'processerfamily') IN ({','.join(['%s'] * len(data.processerfamily))})
OR ("Tags" ->> 'processortype') IN ({','.join(['%s'] * len(data.processortype))})
OR ("Tags" ->> 'embeddedboard') IN ({','.join(['%s'] * len(data.embeddedboard))});
""",( data.category, data.domain, data.technology , data.topic, data.author, data.platform, data.processerfamily, data.processortype, data.embeddedboard))

results = await cur.fetchall()
Мне нужен SQL-запрос, который будет работать и извлекать правильные данные из таблицы.


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-using-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»