2017-07-31 1 views
0

J'essaie d'interroger KDB avec l'instruction select suivante: {select from order where OrderID = x}. En passant dans le paramètre, il continue de lancer des exceptions b'lenghth. J'ai essayé numpy.string_, numpy.bytes_ et bytes en utilisant la méthode .encode() (latin-1 et utf-8).Exception de type qPython bytes dans la requête de synchronisation

Lorsque j'interroge un enregistrement pour examiner le type de la colonne OrderID, il me dit que le type de colonne est bytes.

Qu'est-ce que je fais mal? Je ne sais pas ce que le tiret dans le docs est censé signifier. Merci!

Répondre

0

Il semble que le type OrderID du côté kdb soit une liste de caractères. Dans ce cas, vous devez utiliser like pour faire la comparaison dans votre requête:

{select from order where OrderID like x} 

Et alors vous devriez être en mesure d'utiliser une chaîne Python régulière pour le paramètre, .e.g.

q.sync("{select from order where OrderID like x}", "my_order_id") 

Tant que vous n'utilisez des caractères génériques dans le paramètre x alors cela ne correspond à la chaîne exacte. c'est-à-dire

q)"one" like "one" 
1b 
q)"ones" like "one" 
0b 
q)"ones" like "one*" 
1b 
+0

Savior !! Travaillé comme un charme! Merci beaucoup (vous avez lutté avec toute la journée). –