通过psycopg2将bytea字段导入PostgreSQL数据库

时间:2010-03-03 13:50:42

标签: python postgresql psycopg2

我有一个值列表:

row = ['0x14', '0xb6', '0xa1', '0x0', '0xa1', '0x0']

我想使用psycopg2将这些插入到PostgreSQL数据库的bytea字段中,但我不熟悉python中的字节字符串。

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分: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')

然后可以将字符串拆分成对并转换为integers