2017-02-10 13 views
0

У меня есть таблица в Кассандре, как:вставки списка в Кассандре питона

CREATE TABLE IF NOT EXISTS article(
     url text PRIMARY KEY, 
     title text, 
     author text, 
     sources list<text>) 

И у меня есть объект Article со следующим методом вставки данных в Кассандре:

def save_to_cassandra(self, session): 
    session.execute(
     """ 
     INSERT INTO article (url, title, author, sources) 
     VALUES (%s, %s, %s, ????) 
     """, 
     (self.url, self.title, self.author, ["http://source1.com", "http://source2.com"]) 
    ) 

Вопрос что я должен использовать вместо ???? для правильной форматирования строки

ответ

0

Вы должны использовать% s для всех типов аргументов, no т просто натягивает
Так что используйте% с, вот полный код

def save_to_cassandra(self, session): 
    session.execute(
     """ 
     INSERT INTO article (url, title, author, sources) 
     VALUES (%s, %s, %s, %s) 
     """, 
     (self.url, self.title, self.author, ["http://source1.com", "http://source2.com"]) 
    ) 

Источник: http://datastax.github.io/python-driver/getting_started.html#passing-parameters-to-cql-queries

Другое дело, что вы всегда должны использовать Подготовленные выражения

Подготовленные заявления запросы, анализируются Cassandra и затем сохраняются для последующего использования. Когда драйвер использует подготовленный оператор, ему нужно только отправить значения параметров для привязки. Это снижает сетевой трафик и использование ЦП в Cassandra, потому что Cassandra не требует повторного анализа запроса каждый раз.

 Смежные вопросы

  • Нет связанных вопросов^_^