gpt4 book ai didi

python - 如何用python修改存储过程的输入值

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:41 24 4
gpt4 key购买 nike

目前,我正在尝试修改使用 Python 执行的以下存储过程的两个输入值。

country_cursor.execute(
"[DEV].[DevelopmentSchema].[QA_Extractor] @start_date='2017-05-05', @end_date='2017-05-11'")

我不想每天运行这个程序并从代码中手动更改开始日期和结束日期,而是尝试创建一个提示,在其中输入我想要查找检索的日期。

到目前为止,我已经完成了以下工作:

end_date   = str(datetime.now()).rpartition(' ')[0]
start_date = str(datetime.now() - timedelta(days=7)).rpartition(' ')[0]

country_cursor.execute(
"[DEV].[DevelopmentSchema].[QA_Extractor] @start_date='2017-05-05', @end_date= "+"'"+end_date+"'"+"\"")

我刚刚用变量替换了一个输入日期,但是当我执行此程序时,遇到以下 SQL 错误:

pypyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC SQL Server 
Driver][SQL Server]An object or column name is missing or empty. For SELECT
INTO statements, verify each column has a name. For other statements, look
for empty alias names. Aliases defined as "" or [] are not allowed. Change
the alias to a valid name.')

我的观点是,存储过程不接受此变量作为结束日期,因此,要查找检索的列不存在。我还读过SQL Server query erroring with 'An object or column name is missing or empty'这支持了我的观点。我的想法是正确的还是完全错误的?

如何解决这个问题?欢迎任何想法、建议和改进;)

最佳答案

如果我这样做:

print("[DEV].[DevelopmentSchema].[QA_Extractor] @start_date='2017-05-05', @end_date= "+"'"+end_date+"'"+"\"")

我明白了:

[DEV].[DevelopmentSchema].[QA_Extractor] @start_date='2017-05-05', @end_date= '2017-05-14'"

在我看来,这个查询字符串的末尾有一个杂散的"

部分问题在于您过于努力地将日期格式化为字符串。

我猜有

from datetime import *

在你的代码的顶部(丑陋,但不是你的错)。如果是这样,你可以这样做

start_date = datetime.now() - timedelta(days=7)
end_date = datetime.now()
query_string = f"[DEV].[DevelopmentSchema].[QA_Extractor] @start_date='{start_date:%Y-%m-%d}', @end_date='{end_date:%Y-%m-%d'}"
country_cursor.execute(query_string)

这可以说更容易看到杂散的标点符号。

关于python - 如何用python修改存储过程的输入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com