[英]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)
然后你可以得到“數據”為“😢”
'charset' => 'utf8mb4'
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.