#postgresql #sqlalchemy
#postgresql #sqlalchemy
Вопрос:
Я пытаюсь использовать столбец JSONB и применить .contains
к нему. Это значение столбца представляет собой список строк.
Вот моя модель:
class MessageDocument(Document):
__tablename__ = "message"
id = Column(Integer, primary_key=True, autoincrement=True)
# ...
concerned = Column(JSONB(), default="[]") # list of str
И мой запрос:
.filter(MessageDocument.concerned.contains([character.id]))
Но есть ошибка:
E sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedFunction) operator does not exist: json @> unknown
E LINE 3: WHERE message.concerned @> '["xena"]' AND message.first_mess...
E ^
E HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
Я последовал за многими ответами здесь, но без успеха ( .astext
, .as_text()
, cast(...)
. Как я могу справиться с моим списком строк JSONB, чтобы сделать это .contains
?
Комментарии:
1. откуда взялся этот
@>
операнд?2. Я думаю, что он сгенерирован sqlalchemy