Простой способ конвертировать Qtable, полученный из qpython, в форматированную строку

Привет, я новичок в 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

2 ответа

Возможно, вы просто захотите связать таблицу на выходе из kdb, а не в python. Это даст вам то, что вы хотите, но данные не будут легкими или эффективными для обработки на стороне Python

q)csv 0: select from t
"col1,col2"
"a,1"
"b,2"
"c,3"

Попробуйте выдать q.sync("csv 0: select from t")

Преобразование числовых столбцов в 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')
Другие вопросы по тегам