python连接redis数据库的方法以及序列化和反序列化的方法

本文介绍如何使用Python连接Redis数据库,并通过pickle和json实现数据的序列化和反序列化。具体步骤包括安装Redis依赖、连接数据库及验证连接状态等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、python连接数据库的方法

python连接redis数据库首先需要安装redis依赖项:
在终端敲如下命令进行安装:

pip install redis

然后使用redis中的Redis方法进行数据库的连接,详细的连接方法详见最后面的代码内容!!

二、序列化和反序列化

  • 序列化:把对象变成字符串或者字节串,即为序列化
    方法1:pickle.dumps(对象)
    方法2:json.dumps(对象)

  • 反序列化:把字符串或者字节串变成对象,即为反序列化
    方法:pickle.loads(字节串内容)

以下为详细代码内容,数据库的连接和序列化的内容里面都有包含,内容我也又备注,有兴趣可以查看!!!

"""
序列化:把对象变成字符串或字节串
反序列化:把字符串或字节串还原成对象
json: object ---> str / str ---> object ---> 跨语言
pickle: object ---> bytes / bytes ---> object ---> Python
"""
import json
import pickle
import redis


class Dept:

    def __init__(self, no, name, location):
        self.no = no
        self.name = name
        self.location = location

    def __str__(self):
        return f'{self.no}\t{self.name}\t{self.location}'

# 数据库的连接
redis_cli = redis.Redis(host='47.115.130.16',
                        port=6677,
                        password='123hcl456')
# 判断数据库是否连接成功
print(redis_cli.ping())
print(redis_cli.ttl('username'))
print(redis_cli.get('username'))
redis_cli.expire('username', 1800)
dept = Dept(110, '产品运营部', '昆明')


# 序列化,把对象变成字节串写入数据库:pickle.dumps
redis_cli.set('python2004:pickle:dept:110', pickle.dumps(dept))
# 反序列化,将字节串转化为对象显示:pickle.loads
data2 = redis_cli.get('python2004:pickle:dept:110')
print('1:',pickle.loads(data2),type(pickle.loads(data2)))

#序列化,把对象变成字节串写入
redis_cli.set('python2004:json:dept:110', json.dumps(dept.__dict__))
data = redis_cli.get('python2004:json:dept:110')
# 查询到的数据都是二进制型,使用decode转换成字符串
# 数据是bytes性
print('2:',data,type(data))
# 使用json.loads()可以转换未字典
print('3:',json.loads(data),type(json.loads(data)))
# 使用decode将bytes型转换为str
print('4:',data.decode(),type(data.decode()))
print('5:',redis_cli.hvals('stu:1002'))

程序的结果为:

True
-2
None
1: 110	产品运营部	昆明 <class '__main__.Dept'>
2: b'{"no": 110, "name": "\\u4ea7\\u54c1\\u8fd0\\u8425\\u90e8", "location": "\\u6606\\u660e"}' <class 'bytes'>
3: {'no': 110, 'name': '产品运营部', 'location': '昆明'} <class 'dict'>
4: {"no": 110, "name": "\u4ea7\u54c1\u8fd0\u8425\u90e8", "location": "\u6606\u660e"} <class 'str'>
5: [b'baiyuanfang', b'male', b'1995-3-2']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值