【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")
posted @ 2023-04-28 20:41  萌狼蓝天  阅读(41)  评论(0编辑  收藏  举报