使用Python更新SQL文件中的日期所需的用户输入



更新!我仍在寻找某种方式来指示用户对这些日期进行更新,但我采用了这种方法:

我在SQL文件中声明了一个变量,所以它看起来像:

declare @date date = DATE
Select * from table WHERE date = @date
and then in my python it looks like:
DATE = date(2022, 10, 31)
def sql_data(sql_path, date):
with open(sql_path) as sql_file:
sql = sql_file.read()

sql = sql.replace("DATE", "'{}'".format(date.strftime('%Y-%m-%d')))

df = sql_data('sql_path', DATE)
df.to_csv('csv path', index=False)

我有一个Python脚本,它将执行我的SQL脚本并创建一个csv文件。我需要每月运行这个csv文件——我正在尝试做两件事:

  1. 在我的Python代码执行并运行SQL以创建csv文件之前,我需要首先替换SQL语句中的日期,并将其更新为我将运行此报告的任何月份
  2. 强制运行Python的用户输入一个日期,该日期将替换我的SQL语句中的日期。我想要一个故障保护,在更新日期之前不会让用户继续使用代码

SQL语句如下所示:从表中选择*作为x其中x.date="2022年10月30日">

我需要将字符串"MM/DD/YYYY"替换为我想要的任何日期,格式为"MM/DD/CYYYY"。一个问题是x.date值将不相同,因为此SQL语句将按月运行。我需要x.date的值以用户输入的内容为基础。

到目前为止,我有这个(忽略我没有建立连接——我只是从这个描述中去掉了它(

new_date = input("Enter in the reporting date here (format: 'MM/DD/YYYY')")
with open('myreport.sql', 'r') as sqlfile:
str.replace(' .date = "XXXXX", 'new_date')

我不确定如何替换sql文件中的字符串,因为每次运行此报告时,日期值不一定一致。

SQL语句如下所示:从表中选择*作为x其中x.date='10/31/2022'(日期不一定是10/31/2022(

您仍然没有发布任何请求的代码,但我仍然会尝试一下。

您想要的是一个参数化查询

cursor.execute("select * from table as x where x.date = (?)", (user_input))

通过这种方式,您可以定义user_input并将其用作查询的一部分。

您也可以简单地格式化一个字符串:

query = f"select * from table as x where x.date = {user_input}"

但这是有问题的,因为用户可能会在查询中注入不需要的代码。

相关内容

  • 没有找到相关文章