我正在使用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';")
在输出中,我在单词前面变得很奇怪,过去的换行符就是这样。
示例:
"在寒冷的 n 森林中,狂风咆哮 n ,没有留下任何叶子。"
有没有办法解决这个问题?
答案 0 :(得分:0)
问题在于您的数据摄取,或者在驱动程序读取中没有消耗response
的任何内容。它是存储在您数据库中的n
,而不是\n
char。 python驱动程序不会从原始字节转义或执行任何操作,而是转换为字符串:https://github.com/datastax/python-driver/blob/9869c2a044e5dd76309026437bcda5d01acf99c7/cassandra/cqltypes.py#L693
如果您插入\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
然后逃避它吗?