Flask SQLAlchemy无法将表情符号插入MySQL

时间:2017-04-22 10:08:21

标签: python mysql flask

我使用 Python 2.7 和烧瓶框架与 flask-sqlalchemy 模块。

尝试插入时,我总是遇到以下异常:fp = fopen("D:\\Payload_data\\example.txt", "w+"); for ( i=0; i<ulLines; i++ ) { pLine =pChar; printf( "%08lx : ", pChar-base ); ulen=tlen; ulen = ( ulen > 16 ) ? 16 : ulen; tlen -= ulen; for ( j=0; j<ulen; j++ ) { printf( "%02x ", *(BYTE *)pChar++ ); // ch = *(BYTE *)pChar; // variable for writing to file fprintf(fp, pChar); //writing to a file //fputs("data is", fp); }

我已经将MySQL数据库,表格和相应列设置为Exception Type: OperationalError. Exception Value: (1366, "Incorrect string value: \xF09...,我可以使用终端插入表情符号字符串。

Flask的应用配置已经包含utf8mb4_general_ci,但它根本没有帮助,我仍然得到例外。

感谢任何帮助

4 个答案:

答案 0 :(得分:3)

也许将来会有人这样做: 我所做的只是在我的配置文件中编辑 sql 连接:

SQLALCHEMY_DATABASE_URI = 'mysql://user:password@localhost/database?charset=utf8mb4'

这样我就可以在不改变数据库或表格的情况下存储表情符号。

来源:https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-iv-database/page/13%0A 评论 #322

答案 1 :(得分:0)

  1. 添加配置文件主文件并设置集'charset' => 'utf8mb4'
  2. 您必须编辑要存储表情符号的字段,并将collation设置为utf8mb4_unicode_ci

答案 2 :(得分:0)

确保使用正确的Python Unicode对象,例如使用u"..."文字创建的对象。换句话说,您的对象类型应为unicode而不是str

>>> type('ą')
<type 'str'>
>>> type(u'ą')
<type 'unicode'>

请注意,这仅适用于Python 2,在Python 3中,默认情况下所有字符串文字都是Unicode。

答案 3 :(得分:0)

它对我有用:

// cant use GetType() on TransparentProxy as it may throw error
if (RemotingServices.IsTransparentProxy(instance)) return;

然后您可以将“数据”输入数据库。

您可以发送“数据”,例如“”......无论您喜欢什么样的表情符号。

下次,当您从数据库中获取“数据”时:

你应该:

 import pickle 
 data = request.get_json().get("data") 
 data = pickle.dumps(data) 

然后你可以将“数据”改为“”