【问题标题】:Querying most recent batch data from SQL database from Python从 Python 查询 SQL 数据库中最新的批处理数据
【发布时间】:2021-03-30 15:18:43
【问题描述】:

我正在尝试使用对我们的 SQL 数据库的直接查询来自动处理 python 中的数据。这部分已经完成,但是代码每次都指定运行编号,当新批次开始时,您必须在代码中重新输入最新的运行编号才能继续 - 浪费时间并且重复出现!

df = pd.read_sql(f"Select time, temp from datatable where machineid=84207 and runnumber=1616862158", conn)

我想用最近的运行号更新此代码(最近的运行号将始终是每台机器的数据库中的最大值),而无需查找并输入最近的运行号。有许多不同的机器都将数据收集到 SQL 数据库中,因此必须使用每个 machineid 指定每个数据帧。同样,这部分代码已经完成,我可以为所有机器复制。但是,我不想为每一个都做这个运行编号,因为它会随着时间动态变化。

所以我正在尝试找到一种方法来创建一个将自动定义最大运行数的字符串,例如:

pp1 = pd.read_sql(f"Select Max(runnumber) from datatable where machineid=84207", conn) 打印(pp1)

      max

0 1616862158

有没有办法可以将“pp1”中包含的这个值替换为下面查询行中的字符串?或者设置runnumber=max?我对 WHERE 命令或 python 命令中的语法或选项不够熟悉来设置它。有人可以帮忙吗?

df = pd.read_sql(f"Select time, temp from datatable where machineid=84207 and runnumber=1616862158", conn)

提前谢谢你!

【问题讨论】:

  • 请在您的代码中添加一些格式 :)(缩进 4 个空格)

标签: python sql pandas postgresql


【解决方案1】:

您可以像这样在 where 语句中添加子查询。

select time, temp from datatable where machineid=84207 and runnumber=(select max(runnumber) from datatable) 

【讨论】:

  • 做到了!非常感谢!
猜你喜欢
  • 2016-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多