在Json中通过python访问kdb+/q表?
我试图通过python访问kdb+/q表。我知道有一些库可以帮助python&q之间的通信,但我想看看是否有可能不使用上述库,因为kdb+版本有一些限制 我最初的猜测是: 在kdb+q中定义表格;使用urllib通过python访问kdb- urllib.request.getlocalhost:5000?.j.k表_名称,但未成功 我的另一种方法是使用pd.read_csvlocalhost:5000/q.csv?从表中选择。。。但由于HTTP406错误,这种方法无法工作 从python检索kdb表的灵活/简单方法是什么?如有任何建议/指导,将不胜感激。感谢可能是最常用和最受支持的方法。你说你有版本限制,但PyQ已经存在很长时间了,我相信你可以下载与旧版本的kdb兼容的版本 如果没有,其他一些选项包括: 这里记录了一些选项:在Json中通过python访问kdb+/q表?,python,python-requests,kdb,Python,Python Requests,Kdb,我试图通过python访问kdb+/q表。我知道有一些库可以帮助python&q之间的通信,但我想看看是否有可能不使用上述库,因为kdb+版本有一些限制 我最初的猜测是: 在kdb+q中定义表格;使用urllib通过python访问kdb- urllib.request.getlocalhost:5000?.j.k表_名称,但未成功 我的另一种方法是使用pd.read_csvlocalhost:5000/q.csv?从表中选择。。。但由于HTTP406错误,这种方法无法工作 从python检索k
综上所述,我相信您会发现一些行之有效的方法。更好的选择是使用@terrylyynch提到的用于Python-Q集成的现有api。这将简化许多操作,并且在大多数情况下也将更加有效 但是,如果您想完全在Python中使用http请求来实现这一点,那么您可以使用“请求”模块:
import requests as req
res=req.get("http://localhost:5000/?.j.j t")
res.text
样本输出
'<html><head><style>a{text-decoration:none}a:link{color:024C7E}a:visited{color:024C7E}a:active{color:958600}body{font:10pt verdana;text-align:justify}</style></head><body>
<pre>"[{\\"id\\":1,\\"v\\":3},\\n {\\"id\\":2,\\"v\\":4}]"\n</pre></body></html>'
如您所见,这将为您提供html文本,因此您需要对其进行解析,以从所需的标记中获得结果。有两个python模块可用于html解析,因此您可以使用它们。我成功地使用了您建议的两种方法
q)\l json.k //from kx, not needed for 3.2
q).h.ty[`jsn]:"application/json"
q).h.tx[`jsn]:.j.j'
根据上的注释,需要登记
注意,这里使用的是.json,类似于示例csv查询中的.csv;当发送这样的查询时,kdb将自动将响应编码为JSON
注意:3.2中添加了kdb 3.3+JSON支持,3.3中添加了通过HTTP进行查询。要在旧版本上使用类似功能,可以从kx下载并执行以下操作:
>>> import pandas as pd
>>> pd.read_csv("http://localhost:35207/.csv?trades")
time sym src price size
0 2019-02-07D08:00:53.319000000 ORCL N 32.23 1099
1 2019-02-07D08:01:26.649000000 YHOO O 35.52 471
2 2019-02-07D08:01:36.413000000 YHOO L 35.52 438
然后将HTTP查询修改为r=requests。gethttp://localhost:35207/.jsn?enlist 交易->而不是扩展名.jsn,这是为了避免修改HTTP请求处理程序.z.ph而进行的黑客攻击。[我在v2.8上对此进行了测试]
或者,使用CSV和熊猫:
如果这些方法仍然存在问题,请发布详细的错误输出以帮助调试
正如其他人所观察到的,使用一个可用的q-python库可能会更简单,但我认为如果这不可能,那么应该可以通过HTTP请求实现,如上所述
>>> import pandas as pd
>>> pd.read_csv("http://localhost:35207/.csv?trades")
time sym src price size
0 2019-02-07D08:00:53.319000000 ORCL N 32.23 1099
1 2019-02-07D08:01:26.649000000 YHOO O 35.52 471
2 2019-02-07D08:01:36.413000000 YHOO L 35.52 438