Невозможно вставить в пользовательский тип в 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'}