我有一个这样创建的表:
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 级别做错了什么,或者我的转换是否发生了奇怪的事情吗?