假设我有一个运行 SQL 查询并返回数据框的函数:
import pandas.io.sql as psql
import sqlalchemy
query_string = "select a from table;"
def run_my_query(my_query):
# username, host, port and database are hard-coded here
engine = sqlalchemy.create_engine('postgresql://{username}@{host}:{port}/{database}'.format(username=username, host=host, port=port, database=database))
df = psql.read_sql(my_query, engine)
return df
# Run the query (this is what I want to memoize)
df = run_my_query(my_query)
我想:
- 能够记住我上面的查询,每个值
query_string
(即每个查询)都有一个缓存条目 - 能够按需强制缓存重置(例如,基于某些标志),例如,如果我认为数据库已更改,我可以更新我的缓存。