次のPHPコードをPythonで書き直そうとしていますが、それを行う方法がわかりません。私のバイト、16進数、バイナリの経験はほとんどありません。私はこれを非常に混乱させています。PythonでMySQLバイナリ(8)フィールドに挿入
$code_string = "0000000000000248";
$code_array = array();
$tokens = str_split($code_array, 2);
foreach ($tokens as $token) {
$byte = hexdec($token);
array_push($code_array, $byte);
}
$code_blob = pack("C*",
$code_array[0],
$code_array[1],
$code_array[2],
$code_array[3],
$code_array[4],
$code_array[5],
$code_array[6],
$code_array[7]
);
$sql = "INSERT INTO some_table (code) VALUES ($code_blob)"
"code"フィールドはMySQLバイナリ(8)タイプです。 PHPで上記のコードを実行すると、コードは問題なく挿入されます。 phpMyAdminでは、レコードを見ると "0000000000000248"と表示されます。
私は、これは有用な情報があるのかはわからないが、私は一つ一つのトークンを印刷するとき、私はそれがこの
INSERT INTO some_table (code) VALUES ('H')
のように見えるSQLを印刷するとき、彼らはこの
foreach ($tokens as $token) {
$byte = hexdec($token);
array_push($code_array, $byte);
echo "$byte ";
}
// looks like 0 0 0 0 0 0 2 72
のように見えますPython(3.4)でこれを行う方法がわかりません。
正しい答えはtmadamにありがとうございます。ただ、メモとして、あなたは文字列は「...」Bのように見えるとSQLを中断しますPythonで文字列に直接ブロブを置く場合は、この
sql = "INSERT INTO some_table (code) VALUES (%s)"
cursor.execute(sql, (code_blob,))
db.commit()
のようにそれを行う必要があるデータベースに挿入します。