Sto usando il pacchetto MySQLdb per interagire con MySQL. Sto riscontrando problemi nell'ottenere le conversioni di tipo corretto.python che inserisce e recupera dati binari in mysql
Sto usando un uuid binario a 16 byte come chiave primaria per la tabella e ho un mediumblob contenente informazioni json compresse su zlib.
sto usando il seguente schema:
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;
Poi ho creare una nuova riga nella tabella utilizzando il seguente codice:
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()
)
Poi per recuperare i dati che uso una query simile:
query = cursor.execute('SELECT added_id, id, data, create_date, update_date ' \
'FROM repositories WHERE id = %s',
binascii.a2b_hex(row_id)
)
Quindi la query restituisce un risultato vuoto.
Qualsiasi aiuto sarebbe apprezzato. Inoltre, per inciso, è meglio memorizzare date unix di epoca come numeri interi o TIMESTAMP?
NOTA: Non si verificano problemi nell'inserimento dei dati, solo nel tentativo di recuperarli dal database. La riga esiste quando controllo tramite mysqlclient. !
Grazie mille @
Proprio come un seguito; Sto usando Tornado Database Class come un bel wrapper conveniente su MySQLdb e quando usi una chiamata .get() su un oggetto di connessione non funziona per SELECT ma lo fa con un appropriato .query() o .execute() . –