"""
pickle序列化对象和类到数据库,需修改mysql数据库表结构,字段类型设为二进制,如blob类型,参考:
https://www.cnblogs.com/wangchunlan1299/p/7725062.html
| test | CREATE TABLE `test` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`obj` mediumblob,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 |
<__main__.Person object at 0x0000000002A82A20> zhangsan 18
name:zhangsan,age:18
"""
import pickle
import pymysql
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
def introduce(self):
print('name:%s,age:%s' % (self.name, self.age))
"""
# 序列化对象
person = Person('zhangsan', 18)
ret = pickle.dumps(person)
# print(ret)
# obj = pickle.loads(ret)
# print(obj, obj.name, obj.age)
# obj.introduce()
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='test', charset='utf8')
cursor = conn.cursor()
cursor.execute('insert into test(obj) values (%s);', [ret])
conn.commit()
cursor.execute('select * from test')
result = cursor.fetchall()
ret = result[0][1]
obj = pickle.loads(ret)
print(obj, obj.name, obj.age)
obj.introduce()
"""
# 序列化类
ret = pickle.dumps(Person)
print(ret)
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', database='test', charset='utf8')
cursor = conn.cursor()
cursor.execute('insert into test(obj) values (%s);', [ret])
conn.commit()
cursor.execute('select * from test')
result = cursor.fetchall()
ret = result[0][1]
person_class = pickle.loads(ret)
person = person_class('zhangsan', 18)
print(person.name, person.age)
person.introduce()
Python对象和类序列化到MySQL
猜你喜欢
转载自blog.csdn.net/zhu6201976/article/details/103883439
今日推荐
周排行