Я не уверен, что это правильный путь, но похоже, что работает следующее:
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
.