2016-04-25 8 views
0

Python 2.7からMySQLdbを使用してMySQLのlongblobカラムにバイナリデータを挿入する際に問題がありますが、私は周りを取得する方法がわからない警告:Python 2.7とMySQLdbを使用してMySQLのblobカラムにバイナリデータを挿入する際の警告を避ける方法

CREATE TABLE test_table (
    id int(11) NOT NULL AUTO_INCREMENT, 
    gzipped longblob, 
    PRIMARY KEY (id) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

とテストコード:

#!/usr/bin/env python 

import sys 
import MySQLdb 

blob = open("/tmp/some-file.gz", "rb").read() 
sql = "INSERT INTO test_table (gzipped) VALUES (%s)" 

conn = MySQLdb.connect(db="unprocessed", user="some_user", passwd="some_pass", charset="utf8", use_unicode=True) 
curs = conn.cursor() 
curs.execute(sql, (blob,)) 
ここ

./test.py:11: Warning: Invalid utf8 character string: '8B0800' 
    curs.execute(sql, (blob,)) 

は、テーブル定義であります

私はここで答えを探しましたが、不幸にも多くの質問が見つかったようですが、ポスターにはエンコードの問題がないようです。

質問:

  1. この警告を引き起こしていますか?
  2. どうすれば削除できますか?

答えて

2

もう少し調べてみると、答えが見つかりました。

  1. 実際にはこの警告が生成されます。
  2. バイナリパラメータの前に_binaryを使用することで回避できます。

https://bugs.mysql.com/bug.php?id=79317

次のようにPythonコードを更新する必要がある:

SQL = "TEST_TABLE(gzipされた)値(_binary%秒)。INSERT INTO"

関連する問題