【问题标题】:Iterating SQL query inside python loop and changing the value of date function in SQL query with every loop在 python 循环中迭代 SQL 查询并在每个循环中更改 SQL 查询中日期函数的值
【发布时间】:2021-07-22 06:43:09
【问题描述】:

我有一个 SQL 查询,我想使用 python for 循环对其进行迭代。有没有一种方法可以在 sql 查询中定义一个变量并使用每个 python 循环更新它的值?

date1 = datetime.date(2017, 1, 1) date2 = datetime.date(2017, 12, 31) for d in daterange(date1, date2): SQL = "SELECT * FROM table WHERE TABLE.CREATED_AT = '2017-01-01' cursor.execute(sql)

我想遍历 2017 年的所有日期(created_at)。这是一个示例问题,我不能在查询中使用 WHERE 子句作为日期,因为它是一个具有很多依赖项的复杂查询。有人可以帮我解决这个问题吗? 如果有任何错误,我提前道歉,因为我是这个平台的新手,并且是使用 python 使用 sql 的新手。

【问题讨论】:

  • 我很确定您可以在查询中使用 WHERE 以及 BETWEENGROUP BY,这样做可能会更有效率所以。也许你应该问这个问题。
  • 您好,感谢您的回复。这是一个编写的示例问题,我的真实代码是 24 页长。它有多个临时表。该代码实际上会转到该特定日期并执行在其中插入数据。该代码适用于特定的日期窗口。我所能做的就是在每个日期一次又一次地运行它。

标签: python sql vertica vertica-python


【解决方案1】:

对于您指定格式的日期,我会说您应该以这种方式进行:

import datetime

date1 = datetime.date(2017, 1, 1)
date2 = datetime.date(2017, 12, 31)
date_generated = [date1 + datetime.timedelta(days=x) for x in range(0, (date2-date1).days)]

for date in date_generated:
   SQL = "SELECT * FROM table WHERE TABLE.CREATED_AT = '{}';".format(date)
   cursor.execute(sql)

【讨论】:

  • 您好,感谢您的回复。您的解决方案很有帮助!
  • 不客气。请接受并投票帮助您关闭该主题的答案。最好的问候。
【解决方案2】:

你最好用 SQL 来做 但是,如果您需要在 Python 中执行此操作,这是一种方法:

for d in daterange(date1, date2): 
    SQL = f"SELECT * FROM table WHERE TABLE.CREATED_AT = {d}" 
    cursor.execute(sql)

【讨论】:

  • 嗨。非常感谢你的回复。它帮助了我!
猜你喜欢
  • 2017-01-23
  • 1970-01-01
  • 2021-07-27
  • 1970-01-01
  • 2020-05-20
  • 2016-07-26
  • 1970-01-01
  • 2021-12-28
  • 1970-01-01
相关资源
最近更新 更多