与sqlalchemy的缓存集成。

ecache的Python项目详细描述


运行测试

make unittest

安装/要求

pip intall ecache

用法

带烧瓶积分

fromflaskimportFlask,jsonifyfromflask_sqlalchemyimportSQLAlchemyfromecache.ext.flask_cacheimportCacheableMixin,query_callable,regionsapp=Flask(__name__)app.config['SQLALCHEMY_DATABASE_URI']='sqlite:////tmp/test.db'app.debug=Truedb=SQLAlchemy(app)classUser(db.Model,CacheableMixin):"""Default backend is redis and expiration time is 1 hour, default
    region name is `default`, you can override this:

        cache_regions = your_regions
        cache_label = your_label
    """id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String)@app.route('/users')defall_users():"""Result will try to get from cache first. load from db if cache miss.
    """users=[user.to_dict()foruserinUser.cache.filter()]returnjsonify(users=users)@app.route('/users/<int:user_id')defview_user(user_id):"""Result will try to get from cache first. load from db if cache miss.
    """user=User.cache.get(user_id)returnjsonify(user.to_dict())

更多详细信息请参见example

与纯sqlalchemy模型集成

# -*- coding: utf-8 -*-importredisfromsqlalchemyimport(Column,Integer,String,SmallInteger)fromecache.coreimportcache_mixinfromecache.dbimportdb_manager,model_base# alsosee :class:`ecache.db.DBManager`DBSession=db_manager.get_session('test')cache_client=redis.StrictRedis()CacheMixin=cache_mixin()DeclarativeBase=model_base()classTodoListModel(DeclarativeBase,CacheMixin):__tablename__=='todo_list'TABLE_CACHE_EXPIRATION_TIME=3600id=Column(Integer,primary_key=True)title=Column(String,default='')is_done=Column(SmallInteger,default=0)@classmethoddefget_todo(cls,todo_id):todo=cls.get(todo_id)# `cls.get` inherited from `CacheMixin`returntodo@classmethoddefadd(cls,title):todo=cls(title=title)s=DBSession()s.add(todo)s.commit()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Requestcontextholder在spring 4中具有并发访问权限。IBMWebSphere上的x Web应用程序?   java如何下载、设置和使用Eclipse?   java如何组合这些mysql语句   java JDBC无法连接到openshift上的mysql数据库   如果存在允许正确处理的重载,java对于方便的方法来说是否可行?   使用hibernate序列的java Spring MVC不存在   具有路径的java Selenium ChromeDriver负载扩展问题   读一本书。java中的java文件   退出队列时,Java队列程序结果为空   Java lambda返回带有重复代码问题的列表   java使用意图从其他活动传递数据并在listview中显示   java如何在java中创建JSON输出   java Android:在不破坏或暂停活动的情况下关闭显示   支持Android电视和手机的java多apk   关于Java应用程序测试和调试的一组问题   如何在JavaSE中使用jdbcRealmShiro进行授权   在java中是否有一个无异常检查的URL解析实用程序?   当页面上有多个相同类型的元素时,java会选择一个特定的元素   递归需要帮助发现java代码中的缺陷