我有一个这样的值列表:
row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']
我想bytea
使用 psycopg2 将这些插入到我的 PostgreSQL 数据库中的一个字段中,但我不熟悉 python 中的字节字符串。
实现这一目标的最佳方法是什么?
我有一个这样的值列表:
row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']
我想bytea
使用 psycopg2 将这些插入到我的 PostgreSQL 数据库中的一个字段中,但我不熟悉 python 中的字节字符串。
实现这一目标的最佳方法是什么?
我不确定这是否是正确的方法,但以下似乎可行:
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')
然后可以将字符串分成对并转换为integers
.