MySQL中直接保存Python变量

项目中需要用到MySQL保存数据,开始接触数据库以为只能保存简单的字符和数字,随着学习的深入发现数据库能存储的数据类型还是比较丰富的,之前设计的数据库表有些复杂了。完全可以将Python中的变量(列表、字典等)甚至类作为一个元素直接保存到数据库中,这样可以简化很多操作。

比如在pytho中有一个字典类型的变量data。

data = {'para1':name1,'para2':[1,2,3]}

按照之前的想法数据库中只能存储简单的变量,实现起来会非常麻烦,比如可以像下面这种方式存储:

para1(varchar)para2_1(int)para2_2(int)para_3(int)
name1123

后来发现数据库可以保存二进制的变量,这样就方便多了,用这种方法还可以保存类等中间结果,很方便的:

参考链接:https://www.runoob.com/mysql/mysql-data-types.html

使用MEDIUMBLOB基本就能满足我的需求,现在还有一个问题就是如何将python变量转换为二进制变量呢?这个之前正好用过,可以使用pickle库实现。

data = {'para1':name1,'para2':[1,2,3]}
dataBin = pickle.dumps(data)
这样就可以直接将dataBin写入数据库保存了,和常用的方法一样:
idcontent(MEDIUBLOB)
1dataBin
command = '''INSERT INTO testblob2(content) values(%s)'''    
conn = pymysql.connect(db=db_name,user=db_user,passwd=db_pass,host=db_ip,port=int(db_port),charset="utf8")
cursor = conn.cursor()
cursor.execute(command,dataBin)
conn.commit()
cursor.close()
conn.close()
实际上我们还可以将其转换为json字符串,保存到数据库的文本变量中,但这种方法仅适用于字典,列表等变量:

dataJson = json.dumps(data)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值