我有一些代码(在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方面有东西吗?
答案 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