Jq在Python中过滤流数据

2024-03-19 01:58:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图找出如何过滤从一个端口转发到另一个端口的数据。在

我所做的是从室内定位系统中获取数据并将其导入到我的Oracle数据库中。这是我用来转发数据的脚本,它非常好用。在

基本上,我的室内定位系统只能连接到8787端口,我的数据库从8081端口接收数据。在

import socket
port = 8787
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", port))
print ("waiting on port:", port)
while 1:
    data, addr = s.recvfrom(1024)
    s.sendto(data, ('192.1.1.1',8788)) 

下面是它的数据流:

{"id":"0xDECA34303170235F","timestamp":946684889.332,"msgid":78,"coordinates":{"x":0.392,"y":0.616,"z":1.228,"heading":0.000,"pqf":100},"meas":[{"anchor":"0xDECA353034301E99","dist":1.433,"dqf":100},{"anchor":"0xDECA323030901DE2","dist":8.307,"dqf":100},{"anchor":"0xDECA323031300FBF","dist":6.288,"dqf":89},{"anchor":"0xDECA333035101DAA","dist":10.308,"dqf":87}]}

我需要的是:

[ "0xDECA34303170235F", 946684889.332, 78, 0.392, 0.616, 1.228, 0 ]

我是通过设置一个过滤器并通过jqplay运行示例数据得到的。这是我用过的过滤器

^{pr2}$

我想弄清楚的是把这些过滤器放到转发脚本的什么地方,这样数据在转发之前就可以被过滤掉了。对于数据库,任何丢失的数据都必须为null。在

我在Windows8上使用Python2.7,通过choco下载并安装了jq。在


Tags: 数据端口import脚本数据库过滤器dataport