python de l'insertion et de la récupération de données binaires dans mysql

Je suis en utilisant le MySQLdb paquet pour interagir avec MySQL. Je vais avoir de la difficulté à obtenir le bon type de conversions.

Je suis l'aide d'une binaire de 16 octets uuid comme une clé primaire pour la table et à mediumblob holding zlib comprimé json de l'information.

Je suis en utilisant le schéma suivant:

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;

Puis-je créer une nouvelle ligne dans la table en utilisant le code suivant:

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()
)

Puis de récupérer les données, j'utilise une requête similaire:

query = cursor.execute('SELECT added_id, id, data, create_date, update_date ' \
    'FROM repositories WHERE id = %s',
    binascii.a2b_hex(row_id)
)

Alors la requête retourne un résultat vide.

Toute aide serait appréciée. Aussi, en passant, est-il préférable de stocker l'époque unix dates comme des entiers ou TIMESTAMP?

REMARQUE: je suis de ne pas avoir de problèmes lors de l'insertion des données, il suffit d'essayer de le récupérer à partir de la base de données. La ligne existe quand je vérifie via mysqlclient.

Merci Beaucoup!@

OriginalL'auteur Ian Livingstone | 2011-03-09