通过psycopg2将bytea字段导入PostgreSQL数据库
我有一组值,如下所示:
row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']
我想把这些值放进我的PostgreSQL数据库中的一个bytea
字段里,使用的是psycopg2这个库,但我对Python中的字节字符串不太了解。
有什么好的方法可以做到这一点吗?
1 个回答
2
我不太确定这是不是正确的方法,但下面的做法似乎有效:
row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']
as_hex = ''.join(byte[2:].zfill(2) for byte in row)
# as_hex = '14b6a100a100'
bytes = buffer(as_hex.decode('hex'))
cur.execute("INSERT INTO mylog (binaryfield) VALUES (%(bytes)s)",
{'bytes': bytes})
顺便提一下,当你从数据库中取回数据时,psycopg2会把它作为一个缓冲区返回,前4个字节表示总长度,所以你可以这样获取原始数据:
cur.execute("SELECT binaryfield FROM mylog")
res = cur.fetchone()
my_data = str(res[4:]).encode('hex')
然后可以把这个字符串分成一对一对的,转换成整数
。