python MySQL入库json格式数据问题
0x01 入库含有特殊字符的dict类型数据
escape_string
data = {'name': 'MR."H\'\\\'\\\n\t\rU"'}
# 上面data为dict类型数据,含有特殊字符
data = json.dumps(data)
# json.dumps加载成str类型,此时
data = pymysql.escape_string(data)
# 通过pymysql.escape_string将特殊字符进行转义
sql = "insert into test(`test`) values('%s')"%(data)
# 可以入库,入库时test字段类型为json
ast.literal_eval
通过ast.literal_eval将str类型转换为dict类型,除去dict中的特殊字符:
data = {'name': 'MR."H\'\\\'\\\n\t\rU"'}
data = str(data)
data = data.replace("\\'", "")
data = data.replace("\"", "")
data = data.replace("\\n", "")
data = data.replace("\\t", "")
data = data.replace("\\r", "")
data = data.replace("\\", "")
print(type(data))
print(data)
data = ast.literal_eval(data)
print(type(data))
print(data)
data = json.dumps(data)
print(type(data))
print(data)
<class 'str'>
{'name': 'MR.HU'}
<class 'dict'>
{'name': 'MR.HU'}
<class 'str'>
{"name": "MR.HU"}