Удалить символы новой строки из результатов запроса Кассандры
Я использую драйвер 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
и избежать этого потом?