在 Python 3.8 中使用 qPython 和 Pandas 在 q-lang 中查询

Query in q-lang using qPython and Pandas in Python 3.8

我对 q 语言完全陌生,但我需要使用它来访问 kdb 服务器以从中获取数据。

我正在使用 Python 3.8,在 Windows10 下,安装了 qPython。

我无法将查询发送到服务器。

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()

在执行脚本时 returns 第 15 行出现错误:

qpython.qtype.QException: b'tbl'

所以我无法将正确的表达式发送到服务器。我能够通过终端传递表达式,在 Linux Debian 10 下使用 q(使用 PyQ),所以查询是正确的。

(跳过服务器详细信息以及绑定名称)。

PyQ 和 qPython 在这里被混淆了。 q.sendSync('tbl') 将从 kdb 服务器获取变量 tbl。此错误:qpython.qtype.QException: b'tbl' 表示 kdb 服务器上不存在 tbl。我认为您想要的是要发送到 kdb 服务器的 select 语句:

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/