一、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']