使用 Flask-SQLAlchemy 和 Flask-Caching 对 Flask 的 CachingQuery 实现
项目描述
Flask-SQLAlchemy-缓存
这是iurisilvio 的 Flask-SQLAlchemy-Cache 的一个分支
使用 Flask-SQLAlchemy 和 Flask-Caching 对 Flask 的 CachingQuery 实现。
要开始使用缓存查询,您只需替换 Flask-SQLAlchemy Model.query_class。
from flask_sqlalchemy import SQLAlchemy
from flask_sqlalchemy_caching import CachingQuery
from flask_caching import Cache
db = SQLAlchemy(app, query_class=CachingQuery)
cache = Cache(app)
之后,您可以对模型进行查询YourModel:
from flask_sqlalchemy_caching import FromCache
# cache is a Flask-Caching instance imported for your app init
YourModel.query.options(FromCache(cache)).get()
您还必须RelationshipCache从缓存中启用延迟加载关系。
from sqlalchemy.orm import lazyload
from flask_sqlalchemy_caching import RelationshipCache
rc = RelationshipCache(YourModel.some_relationship, cache)
obj = YourModel.query.options(lazyload(YourModel.some_relationship), rc).get()
# make the query and cache the results for future queries
print(obj.some_relationship)
如果您的表中有一个动态得多的列,并且您希望将其排除在缓存之外,请尝试使用延迟查询,例如:
YourModel.query.options(defer('crazy_column')).options(FromCache(cache)).get()
查看Dogpile Caching 示例以了解有关其
CachingQuery工作原理的更多详细信息。对其进行的大多数更改只是为了将其与 Flask、Flask-SQLAlchemy 和 Flask-Caching 而不是 Dogpile 集成。