【Python】【MySQL】Python将JSON数据以文本形式存放到MySQL的Text类型字段中
1.起因
在做一个自动打卡的玩意。登录会得到那个平台一系列的信息。我又不想专门修改、增加数据库字段来存放,所有打算直接将返回的JSON数据保存到一个MySQL字段中。
内容肯定不能直接放,考虑下比如数据注入的问题,对吧,容易出问题,所有我是打算将JSON数据转为base64编码的格式。
先写一个专门的编码工具函数
def Base64_encode(s):
res = str(base64.b64encode(s.encode("utf-8"))).replace("b'","")[:-1]
return res
str(base64.b64encode(s.encode("utf-8")))
得到的是b'xxx'的文本,我不想要b'
和后面的'
,所有要替换到,然后数据库操作的话如下:
try:
cur, db = db_connect()
except:
return {"code": 33060, "msg": "连接数据库失败", "data": {}}
try:
sql = "update t_info set `token`='%s',`uid`='%s',`planids`='%s',`moguNo`='%s' where `gaccount`='%s'"%(Base64_encode(json.dumps(user_token)),user_id,Base64_encode(json.dumps(plan_ids)) ,moguNo,tel)
print("\n",sql,"\n")
result = cur.execute(sql)
except Exception as e:
print(e)
return {"code":-1,"msg":"发生了错误"}
注意长度问题噢!varchar(255)容易装不下,所有太长了用text类型来装。
然后就是解码
def Base64_decode(s):
return base64.b64decode(s).decode("utf-8")
总结一下:
def Base64_encode(s):
res = str(base64.b64encode(s.encode("utf-8"))).replace("b'","")[:-1]
return res
def Base64_decode(s):
return base64.b64decode(s).decode("utf-8")
版 权 声 明
作者:萌狼蓝天
QQ:3447902411(仅限技术交流,添加请说明方向)
转载请注明原文链接:https://www.cnblogs.com/mllt/p/python-mysql-base64.html