在Python3.8中使用qPython和Pandas在q-lang中进行查询

在Python3.8中使用qPython和Pandas在q-lang中进行查询,python,pandas,kdb,qpython,Python,Pandas,Kdb,Qpython,我对q语言完全陌生,但我需要使用它来访问kdb服务器以从中获取数据 我使用的是安装了qPython的Windows10下的Python 3.8 我无法将查询发送到服务器 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=ser

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

我使用的是安装了qPython的Windows10下的Python 3.8

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

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'

因此,我无法将正确的表达式发送到服务器。我能够在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本身,并在这里了解一些基本知识:


非常感谢您对查询的修复。我更感谢你的链接。(事实上,我在过去见过它,但我认为我不需要详细学习Q语言,因为我只需要查询。)我已经打印了df。然而,我看到所有的数字都很奇怪。例如,日期列为“2615”。。。还有其他的:时间等等。如果你的kdb表有我之前回答中的日期和时间,那么从qpython导入qconnection导入pandas作为pd从datetime导入datetime仍然日期和时间不好看。添加
,pandas=True
qconnection.qconnection
。似乎对我有用。甚至可能不需要
pd.DataFrame