Удалить символы новой строки из результатов запроса Кассандры

Я использую драйвер Python Cassandra для запроса базы данных. Это код, который я запустил:

from cassandra.cluster import Cluster
from cassandra.query import dict_factory

ips = [...]
cluster = Cluster(ips)
session = cluster.connect()
session.row_factory = dict_factory
session.set_keyspace("mykeyspace")
response = session.execute("SELECT * FROM myDB WHERE mykey = 'xyz';")

На выходе я получаю странные символы перед словами, где раньше были символы новой строки.

Пример:

"Над зимним русским лесом в ярости воют ветры без листьев, чтобы дуть".

Есть ли способ решить эту проблему?

1 ответ

Решение

Проблема в приеме данных или в том, что потребляет response не в чтении драйверов. Это n в вашей базе данных, а не в \n голец. Драйвер python не экранирует и не выполняет никаких действий с необработанными байтами, но преобразует их в строку: https://github.com/datastax/python-driver/blob/9869c2a044e5dd76309026437bcda5d01acf99c7/cassandra/cqltypes.py

Если вы вставите \n вы получаете один обратно:

session.execute('CREATE TABLE mydb (mykey text PRIMARY KEY, mycolumn text);')
session.execute("INSERT INTO mydb (mykey, mycolumn) VALUES ('xyz', 'a\nb');")
response = session.execute("SELECT * FROM myDB WHERE mykey = 'xyz';")
for line in response:
   print line['mycolumn']

правильно выводит:

a
b

Есть ли что-то response и избежать этого потом?

Другие вопросы по тегам