私はそのような値のリストを持っています:
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
ます。