当前位置:  开发笔记 > 后端 > 正文

SQLAlchemy/MySQL二进制blob正在进行utf-8编码?

如何解决《SQLAlchemy/MySQL二进制blob正在进行utf-8编码?》经验,为你挑选了0个好方法。

我正在使用SQLAlchemy和MySQL,带有一个files表来存储文件.该表定义如下:

mysql> show full columns in files;
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| Field   | Type         | Collation       | Null | Key | Default | Extra | Privileges                      | Comment |
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+
| id      | varchar(32)  | utf8_general_ci | NO   | PRI | NULL    |       | select,insert,update,references |         |
| created | datetime     | NULL            | YES  |     | NULL    |       | select,insert,update,references |         |
| updated | datetime     | NULL            | YES  |     | NULL    |       | select,insert,update,references |         |
| content | mediumblob   | NULL            | YES  |     | NULL    |       | select,insert,update,references |         |
| name    | varchar(500) | utf8_general_ci | YES  |     | NULL    |       | select,insert,update,references |         |
+---------+--------------+-----------------+------+-----+---------+-------+---------------------------------+---------+

类型的内容列MEDIUMBLOB是存储文件的位置.在SQLAlchemy中,该列声明为:

__maxsize__ = 12582912 # 12MiB                                                                                                                              
content = Column(LargeBinary(length=__maxsize__))                           

我不太确定SQLAlchemy的BINARY类型和LargeBinary类型之间的区别.或者MySQL的VARBINARY类型和BLOB类型之间的区别.而且我不太确定这是否重要.

问题:每当我在该表中存储一个实际的二进制文件,即Python bytesb''对象时,我会得到以下警告

.../python3.4/site-packages/sqlalchemy/engine/default.py:451: Warning: Invalid utf8 character string: 'BCB121'
  cursor.execute(statement, parameters)

我不想只是忽略警告,但似乎文件是完整的.如何优雅地处理此警告,如何解决其原因?

旁注: 这个问题似乎是相关的,它似乎是一个MySQL错误,它试图将所有传入的数据转换为UTF-8(这个答案).

推荐阅读
女女的家_747
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有