Как подключиться к серверу KDB, используя PyQ и Python? - PullRequest
0 голосов
/ 14 февраля 2020

Я использую Python 2.7, и я установил PyQ, с q (версия x64), настроенным правильно, под Debian 10.

Вопрос в том, как подключиться к серверу KDB (у меня есть учетные данные (IP, порт, пользователь и пароль)?

1 Ответ

1 голос
/ 14 февраля 2020

Запустите сеанс pyq, переключитесь на интерпретатор q, затем используйте hopen

Using the q interpreter in PyQ:
>>> q()
q)h:hopen `:localhost:1234 // `:host:port:user:pass
q)h"2+2"
q)4

Edit - дальнейший пример из Python и создание A Pandas .DataFrame:

I have the following table defined on my q server process:

q)tbl:([]col1:`a`b`c;col2:til 3)
q)tbl
col1 col2
---------
a    0   
b    1   
c    2 

Then from my client PyQ interpreter:

from pyq import q
import numpy as np # Numpy is needed as a middle man for interpreting kdb objects to python.
import pandas as pd
import datetime # if your kdb table has dates and times

q("h:hopen `:localhost:1234")
tbl2 = q("h\"tbl\"") # need to escape the quotes around tbl
tblNP = np.array(tbl2)
df = pd.DataFrame(tblNP)
df
  col1  col2
0    a     0
1    b     1
2    c     2

Использование q Python:

from qpython import qconnection
import pandas as pd

if __name__ == '__main__':
    # create connection object
    q = qconnection.QConnection(host='localhost', port=1234, pandas=True)
    # initialize connection
    q.open()

    # simple query execution via: QConnection.sendSync
    df = q.sendSync('tbl')
    # close connection
    q.close()

См. q SQL, чтобы узнать, как выбрать конкретные c данные из ваших таблиц. Таблицы в kdb могут быть очень большими и может быть неразумно выбирать все это. eq

PyQ:
tbl2 = q("h\"select from trades where date = 2020.02.14\"")
qPython:
df = q.sendSync('select from trades where date = 2020.02.14')

Планируете ли вы выполнять какую-либо обработку данных на стороне клиента в q? Если вам нужно только получить данные с сервера kdb для использования с python, q Python может быть лучшим вариантом.

...