【问题标题】:Python: Execute Stored Procedure with ParametersPython:使用参数执行存储过程
【发布时间】:2015-12-11 16:27:28
【问题描述】:

我正在编写一个 Python 脚本,该脚本将记录从存储过程写入文本文件。我在执行带参数的存储过程时遇到问题。

我不确定我可以做些什么不同的方法来使用这两个参数来执行这个存储过程。您可以在下面看到我遇到的错误。

任何见解都将不胜感激。

这是我的代码

# Import Python ODBC module
import pyodbc

# Create connection
cnxn = pyodbc.connect(driver="{SQL Server}",server="<server>",database="<database>",uid="<username>",pwd="<password>")
cursor = cnxn.cursor()

# Execute stored procedure
storedProc = "exec database..stored_procedure('param1', 'param2')"

# Loop through records
for irow in cursor.execute(storedProc):

    # Create a new text file for each ID
    myfile = open('c:/Path/file_' + str(irow[0]) + '_' + irow[1] + '.txt', 'w')

    # Write retrieved records to text file
    myfile.write(irow[2])

    # Close the file
    myfile.close()

这是错误

Traceback (most recent call lst):
File "C:\Path\script.py", line 12, in <module>
  for irow in cursor.execute(storedProc):
      pyodbc.ProgrammingError: ('42000', "[4200] [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'param1'. <102> <SQLExecDirectW>">

【问题讨论】:

    标签: python sql-server stored-procedures


    【解决方案1】:

    我能够通过从查询字符串中删除括号来修复语法错误。

    # Execute stored procedure
    storedProc = "exec database..stored_procedure('param1', 'param2')"
    

    应该是

    # Execute stored procedure
    storedProc = "exec database..stored_procedure 'param1','param2'"
    

    【讨论】:

      【解决方案2】:

      这对我有用

      query = "EXEC [store_proc_name] @param1='param1', @param2= 'param2'"
      cursor.execute(query)
      

      【讨论】:

        【解决方案3】:

        对于 SQL Server:

        cursor.execute('{call your_sp (?)}',var_name)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-01-31
          • 2010-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-02
          相关资源
          最近更新 更多