您好我是python和q / KDB的新手。我正在使用qpython从kdb数据库获取结果,执行以下操作:
q = qconnection.QConnection(host=self.host, port=self.port, username=self.username, password=self.password)
results = q.sync(query)
结果是qtable。我需要将qtable转换为直接的字符串。我只需要这样做:
resultString = str(results)
但是这个字符串有点令人费解。并不是说该表包含日期,而是以数字格式表示。 resultsString看起来像这样:
[(6606, b'XX', b'5Y', 26.67, 0.023, 4.833, -22.88, 0.4, b'sx, 570869003211035000)
(6607, b'XX', b'5Y', 28.40, 0.025, 4.824, -22.75, 0.4, b'sx, 571128191858653000)]
我想知道是否有一个简单的qtable转换,将字符串转换成这样的字符:
2018-02-01,XX,5Y,26.67,0.023,4.83,-22.88,0.4,sx,2018-02-02D06:43:23\n
2018-02-02,XX,5Y,28.40,0.025,4.82,-22.75,0.4,sx,2018-02-05D06:43:11\n
答案 0 :(得分:1)
你可能只想在离开kdb而不是python的路上对表进行字符串化。它会得到你想要的东西,但是在python方面处理数据并不容易或有效
q)csv 0: select from t
"col1,col2"
"a,1"
"b,2"
"c,3"
尝试发出q.sync("csv 0: select from t")
答案 1 :(得分:-1)
将数字列转换为string
可以获得您所追求的结果。
results = q.sync('t:([] 2?.z.d;2?.z.t;2?`3;p:2?100.);update string d, string t, string p from t')
for item in results:
t = ()
for x in item:
t = t + (x.decode(),)
print(t)
('2017.05.31', '16:46:10.161', 'jgj', '43.9081')
('2006.09.28', '19:44:11.560', 'cfl', '57.59051')