python对redis的操作,网上最多的是直接用python的redis库,其实与python操作其他数据库类似,调用了redis底层的命令进行地增删改查,这几天发现了一个非常好用的库——walrus,walrus也是对redis的命令进行了一个封装,但是其中有个非常高级的封装让我爱不释手,这种封装其实也类似于关系型数据库的SQLAlchemy,用类的方式做了一次高级封装,下面是对walrus的简单使用:
安装:pip3 install walrus
官方文档:walrus — walrus 0.5.4 documentation
walrus对redis五种基本类型的操作进行了简单的封装,可以使用python代码去操作redis:
fromwalrusimport*# 导入库db=Database(host='localhost',port=6379,db=0)# 连接数据库
然后就可以使用db进行一系列的操作了。
因为我经常用到walrus的Model类,而且也非常好用,所以来简单介绍下这个Models。
from walrus import *
import pandas as pd
class User(Model):
__database__ = Database(host='localhost', port=6379, db=0)
__namespace__ = 'user'
mobile = TextField(primary_key=True, index=True)
name = TextField(index=True)
school = TextField(index=True)
type_ = TextField(index=True)
@classmethod
def get_all(cls):
return pd.DataFrame([(i.name,i.mobile,i.school,i.type_) for i in cls.all()])
@classmethod
def get_data_by_mobile(cls,mobile):
try:
o = cls.query(cls.mobile == mobile)
return pd.DataFrame([(i.mobile,i.name,i.school,i.type_) for i in o])
except KeyError:
return pd.DataFrame()
@classmethod
def get_data_by_name(cls, name):
try:
o = cls.query(cls.name == name)
return pd.DataFrame([(i.mobile, i.name, i.school, i.type_) for i in o])
except KeyError:
return pd.DataFrame()
@classmethod
def get_data_by_school(cls, school):
try:
o = cls.query(cls.school == school)
return pd.DataFrame([(i.mobile, i.name, i.school, i.type_) for i in o])
except KeyError:
return pd.DataFrame()
@classmethod
def get_data_by_type_(cls, type_):
try:
o = cls.query(cls.type_ == type_)
return pd.DataFrame([(i.mobile, i.name, i.school, i.type_) for i in o])
except KeyError:
return pd.DataFrame()
@classmethod
def set(cls,type_,**kwargs):
cls.create(type_=type_,**kwargs)
这个是老以前redis做管理系统的时候用到的walrus,walrus给我的感觉是存的时候数据像一盘沙子,直接堆在数据库当中,没有像关系型数据库那样整整齐齐的在几张表里边,但是walrus在取的时候却十分的灵活,而且速度也超级快。
上面这块代码主要是继承了walrus的Models类,然后定义了数据库连接,数据命名空间,接下来是字段的定义,方法除了set()是存之外,其他都是用来取数据的。
walrus一般用create()方法进行数据的存储,用load()和query()进行数据的获取,使用起来也是非常方便。如果对redis了解的话,学习walrus是非常容易的,文档中讲的也是非常明确。
这次介绍walrus主要是看到redis和python应用的越来越广泛,而网上对walrus的学习资料和问题也比较少,所以简单写篇文章推荐大家可以尝试一下walrus。