我正在尝试使用以下select语句查询KDB:{select from order where OrderID = x}
。传入参数时,它会不断抛出b'lenghth异常。我使用numpy.string_
方法(latin-1和utf-8)尝试了numpy.bytes_
,bytes
和常规.encode()
。
当我查询一条记录以调查OrderID列的类型时,它会告诉我列类型为bytes
。
我做错了什么?不确定docs中的破折号应该是什么意思。谢谢!
答案 0 :(得分:0)
听起来kdb端的OrderID
类型是字符列表。在这种情况下,您需要使用like
在查询中进行比较:
{select from order where OrderID like x}
然后你应该可以使用常规Python字符串作为参数,.e.g。
q.sync("{select from order where OrderID like x}", "my_order_id")
只要您不在参数x
中使用任何通配符,那么这只会匹配确切的字符串。即。
q)"one" like "one"
1b
q)"ones" like "one"
0b
q)"ones" like "one*"
1b