导入BYTEA场到PostgreSQL数据库通过psycopg2
-
24-09-2019 - |
题
我有值作为这样的列表:
row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']
我想在我的PostgreSQL数据库中插入这些成bytea
场,使用psycopg2,但我不熟悉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
。
不隶属于 StackOverflow