MySQLとのやりとりにMySQLdbパッケージを使用しています。適切な型変換ができない。Pythonでバイナリデータをmysqlに挿入して取得する
私はテーブルのプライマリキーとして16バイトのバイナリuuidを使用していますが、zlib圧縮されたjson情報を保持する中くらいの大きさのブロブを持っています。
私は、次のスキーマを使用しています:私は類似したクエリを使用し、データを取得するために、次に
data = zlib.compress(json.dumps({'hello':'how are you :D'})
row_id = uuid.uuid(4).hex
added_id = cursor.execute('
INSERT INTO repositories (id, data, create_date, update_date)
VALUES (%s, %s, %s, %s)',
binascii.a2b_hex(row_id),
data,
time.time(),
time.time()
)
:
CREATE TABLE repositories (
added_id int auto_increment not null,
id binary(16) not null,
data mediumblob not null,
create_date int not null,
update_date int not null,
PRIMARY KEY (added_id),
UNIQUE(id)
) DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ENGINE=InnoDB;
は、それから私は、次のコードを使用して、テーブルに新しい行を作成します。
query = cursor.execute('SELECT added_id, id, data, create_date, update_date ' \
'FROM repositories WHERE id = %s',
binascii.a2b_hex(row_id)
)
次に、クエリは空の結果を返します。
ご協力いただければ幸いです。また、別として、UNIXの時代の日付を整数またはTIMESTAMPとして保存する方が良いでしょうか?
注:私はデータを挿入することに問題はありませんが、データベースから取得しようとしています。この行は、mysqlclientでチェックすると存在します。 !
おかげでたくさん@
次のとおりです。私はTornado Database ClassをMySQLdbの便利なラッパーとして使用しています。接続オブジェクトで.get()コールを使用すると、SELECTに対しては機能しませんが、適切な.query()または.execute() 。 –