美文网首页
python操作redis——walrus

python操作redis——walrus

作者: 开拖拉机去撒哈拉 | 来源:发表于2018-09-30 22:16 被阅读0次

    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。

    相关文章

      网友评论

          本文标题:python操作redis——walrus

          本文链接:https://www.haomeiwen.com/subject/esdgoftx.html