bravoの日記: PythonでMySQLのBLOBにバイナリファイルをいれたいときは
日記 by
bravo
PythonでバイナリファイルをダイレクトにBLOBにいれるときはどうすればいいか...PythonCookbookに書いてあるescape_stringを使う方法はどうもobsoleteらしく、もっと簡潔にかけるようになっている。
とりあえずこんなテーブルでも用意。
mysql> desc bindb;
+---------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| title | text | YES | | NULL | |
| content | blob | YES | | NULL | |
+---------+------+------+-----+---------+-------+
で、入れる
con = MySQLdb.connect(user='scott', passwd='tiger', db='bindb')
cur = con.cursor()
# gzipされたファイルをロード
gz = open('hoge.txt.gz', 'rb').read()
# 文字列フォーマッティングのような感じにinsertする。
cur.execute("insert into bindb values('test', %s)", gz)
ただどうもバイナリデータはmysqldumpで出てくれないとかいろいろ話を聞くので、無くしたくないときはちゃんとしたファイルシステムにいれるほうがイイみたいです。それかuuencodeとかbinasciiとかいろいろやるとよさげ。
とりあえずこんなテーブルでも用意。
mysql> desc bindb;
+---------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+------+------+-----+---------+-------+
| title | text | YES | | NULL | |
| content | blob | YES | | NULL | |
+---------+------+------+-----+---------+-------+
で、入れる
con = MySQLdb.connect(user='scott', passwd='tiger', db='bindb')
cur = con.cursor()
# gzipされたファイルをロード
gz = open('hoge.txt.gz', 'rb').read()
# 文字列フォーマッティングのような感じにinsertする。
cur.execute("insert into bindb values('test', %s)", gz)
ただどうもバイナリデータはmysqldumpで出てくれないとかいろいろ話を聞くので、無くしたくないときはちゃんとしたファイルシステムにいれるほうがイイみたいです。それかuuencodeとかbinasciiとかいろいろやるとよさげ。
PythonでMySQLのBLOBにバイナリファイルをいれたいときは More ログイン