2017-08-16 17 views
1

我無法從Django調用STORED Procedure。我可以打電話使用正常的python程序中的STORED Procedure。 樣品工作python代碼Django Pyodbc存儲過程並非在字符串格式化過程中轉換的所有參數1- Sql服務器

cursor = connect.cursor() 
params=('IBM','2016') 
cursor.execute("EXEC SP_Competitor_Extract ?, ? ",params) 

這段代碼工作正常。但是,當我試圖從Django執行它不起作用。

def index(request): 
    cursor = connection.cursor() 
    try: 
     params=["IBM", "2015"] 
     cursor.execute("{call SP_Competitor_Extract (?,?)}",params) 
     while cursor.nextset(): 
      try: 
       results={'results':cursor.fetchall()} 
       break 
      except pyodbc.ProgrammingError: 
       continue 

這是給我錯誤消息not all arguments converted during string formatting

enter image description here

+0

包括錯誤 –

+0

文件的完整回溯 「C:\用戶\ eindswa \應用程序數據\本地\程序\ Python的\ Python35-32 \ LIB \站點包\ SQL_SERVER \ pyodbc \ base.py」 在format_sql 509. sql = sql%tuple('?'* len(params)) 異常類型:TypeError at/DS_LAB_4/ 異常值:並非在字符串格式化期間轉換的所有參數 –

回答

0

現在它的工作在PYodbc沒有callproc。你可以直接傳遞參數。你不需要佔位符。在我的案例cursor.execute("{call SP_Competitor_Extract IBM,2016}")工作。我將所有值設爲variable並創建SQLcursor.execute(SQL)

相關問題