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

标签 python sql sql-server python-3.x

目前,我正在尝试修改使用 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/

相关文章:

sql - oracle的 'yy'和 'rr'日期掩码有什么区别?

sql - 窗口函数 : last_value(ORDER BY . .. ASC) 与 last_value(ORDER BY ... DESC) 相同

.net - 尝试调试 .NET 代码调用的 SQL 存储过程时出现 "The breakpoint will not currently be hit..."错误

sql - 使用 Visual C# Express 连接到 SQL Server

python - 如何自动将ForeignKey分配给CBV Create View?

python - Jupyter笔记本隐藏代码和其他文件

javascript - 如何将 javascript 函数的值传递给 Django View ?

python - 数据透视表和计数

mysql - SQL从字典中的键获取值

sql-server - 使用内连接更新?