我正在使用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() 。 –