Запрос в q-lang с использованием q Python и Pandas in Python 3.8 - PullRequest
0 голосов
/ 16 февраля 2020

Я совершенно новичок в q-language, но мне нужно использовать его для доступа к серверу kdb для получения данных.

Я использую Python 3.8, под Windows10, с установленной q Python.

У меня проблемы с получением запроса к серверу.

from qpython import qconnection
import pandas as pd


tbl = 'q("h\"select from trade where date = 2007.02.28, sym = `XXXX\"")'


q = qconnection.QConnection(host=server, port=server_port, username=user, password=server_password, timeout=server_timeout)

q.open()
df = pd.DataFrame(q.sendSync('tbl'))
q.close()

При выполнении скрипта он возвращает ошибку в строке 15:

qpython.qtype.QException: b'tbl'

Поэтому у меня возникла проблема с отправкой правильного выражения на сервер. Я смог передать выражение через терминал, используя q (с PyQ) в Linux Debian 10, поэтому запрос правильный.

(Детали сервера пропущены, а также имя связи).

1 Ответ

0 голосов
/ 16 февраля 2020

PyQ и q Python здесь запутаны. q.sendSync('tbl') получит переменную tbl с сервера kdb. Эта ошибка: qpython.qtype.QException: b'tbl' означает, что tbl не существует на сервере kdb. Я думаю, что вы хотели, чтобы оператор SELECT отправлялся на сервер kdb:

from qpython import qconnection
import pandas as pd

q = qconnection.QConnection(host=server, port=server_port, username=user, password=server_password, timeout=server_timeout, pandas=True)

q.open()
df = q.sendSync('select from trade where date = 2007.02.28, sym = `XXXX')
q.close()

Возможно, вам стоит потратить некоторое время на сам q и освоиться с некоторыми основами здесь:

https://code.kx.com/q4m3/1_Q_Shock_and_Awe/

...