【发布时间】:2020-12-02 20:29:08
【问题描述】:
我正在尝试运行一个带有许多参数的存储过程。为此,我使用了pyodbc 库及其cursor.execute 函数。
以下是我要执行的查询:
executionStr = "EXEC ? @ImportJSON= ?, ?=?, ?=?, ?=?",procName, data, param1, param1Value, param2, param2Value, param3, param3Value
当我运行查询时,它给了我一个错误
TypeError:要执行的第一个参数必须是字符串或 unicode 查询。
当我尝试按照以下方式运行查询时,它成功执行,我可以看到数据进入。
executionStr = "EXEC "+procName+" @ImportJSON='"+data+"', "+param1+"='"+param1Value+"' , "+param2+"='"+param2Value+"' , "+param3+"='"+param3Value+"';"
我正在尝试以以前的格式运行查询,以便保护我的代码免受 SQL 注入。
我也尝试使用以下参数运行查询,但给出了相同的错误:
preexe = "EXEC ? @ImportJSON= ?, "+param1+"=?, "+param2+"=?, "+param3+"=?"
procedure_cursor.execute(preexe,(procName, data, param1Value, param2Value, param3Value))
我不确定我做错了什么或哪里出错了。任何帮助将不胜感激。
提前谢谢你。
【问题讨论】:
标签: python sql-server stored-procedures pyodbc