Невозможно вставить в пользовательский тип в Cassandra

У меня есть пользовательский тип и таблица в Cassandra как:

CREATE TYPE message (
  txt text,
  pub_date text
);


CREATE TABLE user_messages(
    username text,
    messages list<frozen <message>>,
    PRIMARY KEY (username)
);

Я пытаюсь вставить данные в таблицу через код Python как:

session.execute('''update user_messages set messages = {txt :'''+ '"'+request.json.get('text') +'"'+''',pub_date:'''+ str(int(time.time())) +'''} where username=''' + username)

Но он не работает правильно для ввода поля txt как: "Это мой новый твит". Вывод консоли для ошибки:

SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:64 no viable alternative at input ',' (...set messages = {txt :["This is my new twee]t",...)">

Если я сделаю поле ввода txt более простым, например: "твит", то ошибка

SyntaxException: <Error from server: code=2000 [Syntax error in CQL query] message="line 1:49 no viable alternative at input ',' (...set messages = {txt :["twee]t",...)">

Я что-то пропустил? Есть ли другой способ вставить данные в пользовательский тип данных? Я попытался использовать запрос INSERT, но он не удался. Поэтому я попытался с помощью команды UPDATE. Пожалуйста, предложите мне какое-нибудь решение.

1 ответ

Это просто синтаксическая ошибка из-за того, что вы используете двойную кавычку ("это мой твит") для значения message->txt. Убедитесь, что вы вставляете с одинарной кавычкой, что-то вроде:

{txt: 'This is my tweet', pub_date: 'yesterday'}
Другие вопросы по тегам