我对q-language完全陌生,但我需要使用它来访问kdb服务器来获取数据。
我使用的是安装了qPython的Windows10下的Python3.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 Debian10下使用q(带有PyQ)通过终端传递表达式,所以查询是正确的。
(将跳过服务器详细信息以及焊接名称)。
发布于 2020-02-17 00:00:22
PyQ和qPython在这里被搞混了。q.sendSync('tbl')将从kdb服务器获取变量tbl。这个错误: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://stackoverflow.com/questions/60245722
复制相似问题