ファイルを BLOB として MySQL データベースに保存しようとしています。現在、DB は非常に単純で、1 つの列「ファイル」を longblob 型として持つテーブルです。
コードは次のとおりです。
file = open("file.txt","r")
data = file.readlines()
dp = pickle.dumps(data,1)
sql = "insert into Files values (%s)"
cursor.execute(sql,(MySQLdb.escape_string(dp),))
これは正常にアップロードされているようですが、データを取得するときに unpickle しようとすると EOFError が発生します。まったく酸洗いせずにプロセスを試してみると、文字列はエスケープ解除されず、ファイルに書き戻すときにエスケープ文字が文字列に残ります(エスケープ解除/再エスケープするためにそこに欠けているpythonステップがない限り)。
sql = "select File from Files"
cursor.execute(sql)
ret = cursor.fetchone()
pickle.loads(ret[0])
EOFError exception