记忆 SQL 查询

2024-04-13

假设我有一个运行 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)

我想:

  1. 能够使用每个值一个缓存条目来记住上面的查询query_string(即每个查询)
  2. 能够强制一个缓存重置按需(例如基于某些标志),例如这样,如果我认为数据库已更改,我可以更新缓存。

我怎样才能做到这一点joblib https://pythonhosted.org/joblib/, jug https://github.com/luispedro/jug?


是的,你可以这样做joblib https://pythonhosted.org/joblib(这个例子基本上是自我粘贴):

>>> from tempfile import mkdtemp
>>> cachedir = mkdtemp()

>>> from joblib import Memory
>>> memory = Memory(cachedir=cachedir, verbose=0)

>>> @memory.cache
... def run_my_query(my_query)
...     ...
...     return df

您可以使用清除缓存memory.clear().


请注意,您还可以使用lru_cache甚至用一个简单的字典“手动”:

def run_my_query(my_query, cache={})
    if my_query in cache:
        return cache[my_query]
    ...
    cache[my_query] = df
    return df

You could清除缓存run_my_query.func_defaults[0].clear()(虽然不确定我是否会推荐这个,只是认为这是一个有趣的例子)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

记忆 SQL 查询 的相关文章

  • x % 2 == 0 是什么意思? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我确信这是
  • 配置解析器和带 % 的字符串

    愚蠢的问题 当然 简单的答案 我正在使用 configparser 从文件中读取一些字符串 当字符串具有 符号 例如 时 它会抱怨 ConfigParser InterpolationSyntaxError 后必须跟 或 找到 有人熟悉这个
  • PyDev 无法再调试

    我正在使用 eclipse 4 2 1 和 pydev 2 7 1 以前是 2 6 0 一切都工作正常 直到调试器突然停止工作 它打印 pydev debugger 开始 然后根本不运行程序 而是挂起 根据我在其他问题报告中找到的一些信息
  • Python 3.8 的点子

    如何安装适用于 Python 3 8 的 Pip 我将 3 8 设置为我的默认 Python 版本 sudo apt install python3 8 pip gives 无法找到包 python3 8 pip 和跑步 python3 8
  • 使用 pandas 的 TimeGrouper() 按 1 秒的间隔查找列计数

    考虑由时间戳索引的数据帧 数据 如下所示 Index Receiver Type Retry 1970 01 01 00 00 00 000000000 R1 Data 1 1970 01 01 00 00 00 800000000 R1
  • 当数据帧预排序时 pandas.groupby.nsmallest 会丢弃多索引

    我正在使用 pandas 0 22 0 python 版本 3 6 4 groupby与 nsmallest方法查找数据帧每组中的最小项目 这是一个示例数据框 gt gt gt import pandas as pd gt gt gt df
  • 什么时候会在 dict 上使用键值对作为 dict.update 方法?

    我注意到你可以做两件事来更新字典 并且它们似乎有相同的结果 a a update foo 1 a a update foo 1 两者都会产生如下所示的字典结果 foo 1 是否有任何理由更喜欢使用字典或键 值对作为更新方法 它们在功能上是否
  • python 和回文

    我最近写了一个循环的方法 usr share dict words并使用我的返回回文列表ispalindrome x 方法 这是一些代码 有什么问题吗 它只会停止 10 分钟 然后返回文件中所有单词的列表 def reverse a ret
  • 如何获取 ndarray 的 x 和 y 维度 - Numpy / Python

    我想知道是否可以分别获取 ndarray 的 x 和 y 维度 我知道我可以使用ndarray shape获取表示维度的元组 但如何在 x 和 y 信息中分离它 先感谢您 您可以使用元组拆包 y x a shape
  • 快速分类(分箱)

    我有大量条目 每个条目都是浮点数 这些数据x可以通过迭代器访问 我需要使用像这样的选择对所有条目进行分类10
  • matplotlib 的上限/下限

    我想用误差线绘制一些数据点 其中一些数据点只有上限或下限 而不是误差线 所以我尝试使用索引来区分带有误差条的点和带有上限 下限的点 但是 当我尝试这样的事情时 errorbar x i y i yerr ymin i ymax i 我收到错
  • python seaborn:按色调显示 alpha

    在seaborn中 色调为组设置不同的颜色 我可以设置吗alpha取决于组中的JointGrid 或者甚至在单个数据点上 sns set theme jg sns JointGrid data df sns x x y y hue hue
  • pandas:如何将嵌套 JSON 解包为数据帧?

    我有这样的 JSON 输出 json json SeriousDlqin2yrs prediction 0 prediction probs 0 0 95 1 0 04 SeriousDlqin2yrs prediction 0 predi
  • 如何编写凯撒密码 Python

    我不知道如何开始编写程序 input input Input the text you would like encrypted def cipher text letter code for i in input number code
  • 从Python中的URL中提取域[重复]

    这个问题在这里已经有答案了 我有一个像这样的网址 http abc hostname com somethings anything 我想得到 hostname com 我可以使用什么模块来完成此任务 我想在python2中使用相同的模块和
  • 从另一个文件执行按钮命令?

    我已经开始开发一个 GUI 系统 在该系统中 我需要从一个文件导入一个函数 以便在按下按钮时在主文件中执行 但每次运行它时 我都会得到 AttributeError partially initialized module Two has
  • 从纪元到相对日期的秒数

    我正在处理自纪元以来的日期 并且已经得到了 例如 date 6928727 56235 我想将其转换为另一种相对格式 以便我能够将其转换为与纪元相关的格式 使用 time gmtime date 它返回 year 1970 mon 3 da
  • 从values() 或values_list() 中排除字段

    有没有一种有效的方法从函数中排除字段values or values list e g Videos objects filter id 1 get values 我想从此查询集中排除该字段duration 我知道我可以指定我想要在结果中包
  • 在 Django 查询中与父级一起获取子级数据

    我有两个模型产品和产品包 产品包有一个产品型号的外键 我如何访问包含产品包的所有产品的列表 class Product models Model title models CharField verbose name Product Tit
  • 在 Python 中使用列表理解来执行类似于 zip() 的操作?

    我是一名 Python 新手 我想做的事情之一就是围绕列表理解进行思考 我可以看到这是一个非常强大的功能 值得学习 cities Chicago Detroit Atlanta airports ORD DTW ATL print zip

随机推荐

  • MonologBu​​ndle FingerCrossedHandler:如何配置exclusive_404s

    我正在开发 Symfony 2 8 6 应用程序 我尝试按照描述配置我的 Monologhere http symfony com doc current cookbook logging monolog regex based exclu
  • 为什么Java中的Set数据结构内部使用Map?

    我想知道为什么HashSet http www docjar com html api java util HashSet java html uses HashMap TreeSet uses TreeMap and LinkedHash
  • 使用 awk 计算行的平均值

    我一直在编写一个脚本 通过读取 txt 文件的输入来计算行的平均值 示例文本输入文件输入 txt 157361 155687 156158 156830 149610 151824 152353 152027 159195 158490 1
  • ASP.Net双击问题

    我的 ASP net 页面有一个小问题 如果用户双击 提交 按钮 它将写入数据库两次 即在图像按钮上执行两次 onclick 方法 如何才能使用户单击图像按钮时仅禁用图像按钮 我试过了
  • NSPredicate 过滤 Realm 和 block 的区别

    我想知道 Realm 的查询性能 鉴于此代码 let result1 realm objects Person self filter age lt 30 AND AND let result2 realm objects Person s
  • 如何使用正则表达式匹配括号内的文本?

    我有以下模式 COMPANY 277 9887 ASP 277 9887 INC 我希望最终的输出是 公司 ASP INC 目前我有以下代码 它不断返回原始模式 我假设因为该组都落在第一个 和最后一个 之间 Pattern p Patter
  • C# 类 Java 的内联扩展?

    我会在 Google MSDN 上查找此内容 但我不知道它叫什么 所以我在这里询问 在 Java 中 我似乎记得你可以做这样非常酷的事情 例如 Class MyClass int number MyClass void setNumber
  • XCode 机器人错误:“内部时间序列后错误”

    我已经设置了新的 OSX Mavericks 服务器来通过机器人运行我的 iOS 项目的测试 虽然构建和运行测试以及一切都顺利进行 但实际的集成被报告为失败 在机器人日志文件末尾 以下错误多次出现 https Request XCBotSe
  • 还有其他访问相机的替代方法吗?

    除了使用 ActionScript 3 之外 还有其他方法来访问相机吗 import flash media Camera videoInstance attachCamera cameraInstance 或者我应该使用任何 API 吗
  • VBA 控件集合(数组?)

    在寻找一种在用户表单上模拟可填充网格的方法时 我遇到了这在 Excel 先生身上 https www mrexcel com board threads datagrid on vba userform 840043 site Dim Gr
  • 解决 CouchDB 中已删除文档的复制冲突

    官方文档推荐的解决复制冲突的方式是 使用文档阅读冲突的修订版本 conflicts字段 例如通过视图 获取列出的所有修订的文档 执行特定于应用程序的合并 删除不需要的修订 当我想合并的时候问题就来了deleted文件 他们没有出现在 con
  • Angular 6 如何获取两个位置 AGM 之间的距离

    I get 方向使用此参考在两点之间https www npmjs com package agm direction https www npmjs com package agm direction现在我想获取 计算distance在两
  • C# 和不同国家的当前当地时间

    C 提供了一种获取当前日期的方法DateTime Now 但问题是我的服务器在美国 当我使用时我得到美国时间DateTime Now 由于我的用户来自世界各地 有什么方法可以在 C 中获取特定国家 地区的当前当地时间吗 我有每个用户的区域设
  • 设置为 html 文档的背景

    有没有办法让我制作一个 HTML5 画布作为我正在制作的网页的背景 并将所有元素放在它上面 所以它的作用就像 我尝试使用 z index 执行此操作并将元素定位在顶部 但随后它们是可单击或可聚焦的 我需要它们仍然正常工作 但画布也只能在背景
  • 使用 PDFBox 将 FormXobject 内容从资源添加到内容流?

    我的 page1 gt Resource gt Xobjects gt Fm0 Fm1 Fm2 下有 FormXobject 所以它不是直接内容流 在内容 gt 内容流下不可用 所以我想将 Fm0 gt Contentstream 的内容流
  • Android Studio 1.3.1 和 Google Glass -- 创建新项目 |目标 Android 设备 |玻璃未安装

    当尝试在 Android Studio 1 3 1 Win 8 1 中创建新项目时 我无法选择 Glass 在 上目标 Android 设备 屏幕 Glass SDK 不可选 已禁用 并显示 Glass 未安装 但是 当我检查 SDK 管理
  • 如何避免来自mongodb的transparent_hugepage/defrag警告?

    我从 mongodb 收到以下关于 THP 的警告 2015 03 06T21 01 15 526 0800 I CONTROL initandlisten WARNING sys kernel mm transparent hugepag
  • Selenium C# 中的显式等待不起作用。怎么了?

    所以我遇到了显式等待的问题 我不想使用 Thread Sleep 这是一个简单的测试 它打开一个页面 然后后退和前进 加载此页面大约需要 2 3 秒 我想以动态方式执行此操作 测试 希望我不要太困惑 我做了很多研究 但没有任何作用 也许我做
  • Delphi从ios/Android本地存储打开PDF

    我尝试在移动设备上从本地存储打开 PDF 文件 我已将文件放入 iOS 的启动 文档 Android 的资产 内部 用这个代码 filename TPath Combine TPath GetDocumentsPath file pdf W
  • 记忆 SQL 查询

    假设我有一个运行 SQL 查询并返回数据帧的函数 import pandas io sql as psql import sqlalchemy query string select a from table def run my quer