У меня есть таблица, которая создана так:
CREATE TABLE bin_test
(id INTEGER PRIMARY KEY, b BLOB)
Использование Python и cx_Oracle, если я сделаю это:
value = "\xff\x00\xff\x00" #The string represented in hex by ff00ff00
self.connection.execute("INSERT INTO bin_test (b) VALUES (rawtohex(?))",
(value,))
self.connection.execute("SELECT b FROM bin_test")
Я в итоге получаю шестнадцатеричное значение a000a000
, что не правильно! Однако, если я сделаю это:
import binascii
value = "\xff\x00\xff\x00"
self.connection.execute("INSERT INTO bin_test (b) VALUES (?)",
(binascii.hexlify(value,)))
self.connection.execute("SELECT b FROM bin_test")
Я получаю правильный результат. У меня есть система преобразования типов, но описать ее здесь довольно сложно. Таким образом, может ли кто-нибудь указать мне правильное направление относительно того, что я делаю что-то не так на уровне SQL или что-то странное происходит с моими преобразованиями?