我正在使用MySQLdb包與MySQL進行交互。我無法獲得正確的類型轉換。python插入和檢索到MySQL的二進制數據
我正在使用一個16字節的二進制uuid作爲表的主鍵,並且有一個保存zlib壓縮的json信息的mediumblob。
我用下面的模式:
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數據庫類作爲MySQLdb的一個很好的方便包裝,當你在連接對象上使用.get()調用時,它不適用於SELECT,但是它具有正確的.query()或.execute() 。 –