将Unicode象形图保存到mysql

时间:2019-02-17 10:54:29

标签: python mysql django utf-8 collation

我有一些代码(在django服务器上),将POST请求中包含的json数据写入mysql db。 某些请求包含特定的象形图,例如或。 这些应该被写入文本字段,但是会导致db错误。

处理请求的代码类似于

            json_data = json.loads(request.body.decode('utf-8'))
            i = Event(event=json_data['event'], dt=parse(json_data['dt']),
                      object_id=json_data['object_id'], user_id=json_data['user_id'],
                      payload=json_data['payload'])
            i.save()

数据库排序规则当前设置为uft8_general_ci。

返回的错误是“字符串值不正确”。

将此类请求与其他请求一起保存到数据库的最佳实践是什么?

更新:通过将排序规则更改为utf8mb4_general_ci,我现在可以将这些符号直接写到db(通过phpmyadmin),但是对于python请求仍然没有运气。同样的错误。 django方面有东西吗?

1 个答案:

答案 0 :(得分:0)

将MySQL字符集更改为utf8mb4将允许您直接将象形图序列化到数据库,但是为了在Django端修复此问题,您还必须更新settings.py(见下文):

DATABASES = {
    'default': {
        'ENGINE':'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'OPTIONS': {'charset': 'utf8mb4'},
    } }

另请参阅MySQL “incorrect string value” error when save unicode string in Django