簡體   English   中英

Flask SQLAlchemy 無法將表情符號插入 MySQL

[英]Flask SQLAlchemy can't insert emoji to MySQL

我正在使用Python 2.7和帶有flask-sqlalchemy模塊的flask 框架。

嘗試插入時我總是收到以下異常: Exception Type: OperationalError. Exception Value: (1366, "Incorrect string value: \\xF09... Exception Type: OperationalError. Exception Value: (1366, "Incorrect string value: \\xF09...

我已經將 MySQL 數據庫、表和相應的列設置為utf8mb4_general_ci ,我可以使用終端插入表情符號字符串。

Flask 的應用程序配置已經包含app.config['MYSQL_DATABASE_CHARSET'] = 'utf8mb4' ,但是它根本沒有幫助,我仍然得到異常。

任何幫助表示贊賞

也許將來會有人這樣做:我所做的只是在我的配置文件中編輯 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 Comment #322

這個對我有用:

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

然后您可以將“數據”輸入到數據庫中。

你可以發送像“😢”這樣的“數據”......任何你喜歡的表情符號。

下次,當您從數據庫中獲取“數據”時:

你應該 :

data = pickle.loads(data) 

然后你可以得到“數據”為“😢”

  1. 添加配置文件主文件並設置 set 'charset' => 'utf8mb4'
  2. 您必須編輯要在其中存儲表情符號的字段並將collation utf8mb4_unicode_ci設置為utf8mb4_unicode_ci

確保使用正確的 Python Unicode 對象,例如使用u"..."字面量創建的對象。 換句話說,你的對象的類型應該是unicode而不是str

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

請注意,這僅適用於 Python 2,在 Python 3 中,默認情況下所有字符串文字都是 Unicode。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM