次のように作成されたテーブルがあります。
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")
最終的に16進値がになりますが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レベルで何か間違ったことをしているのか、それとも変換で何か奇妙なことが起こっているのかについて、誰かが私を正しい方向に向けることができますか?