2017-09-14 41 views
0

我正在用Python的Django框架構建一個web應用程序,DB是Sql服務器Azure,使用Pyodbc。在Python中運行sql server查詢時出錯error

我有一個問題,我無法去解決,我得到一個parameter(file_name)這是一個字符串,運行與我得到在第一種情況下空的結果和

"sql = sql % tuple('?' * len(params)) 
      TypeError: not all arguments converted during string formatting" 

參數查詢時第二種情況,我做錯了什麼?

file_name=request.POST.get('filetodelete') 
    with connections['default'].cursor() as c: 
     1st case 
      parms=[file_name] 
      sql='select * from banks_row_data where file_name=%s' 
      c.execute (sql,parms) 
      test=c.fetchall() 
     2nd case 
      c.execute (sql,file_name) 
      test=c.fetchall() 
+2

爲什麼在Django中使用原始SQL,特別是對於這樣一個簡單的查詢? –

回答

3

pyodbc使用?作爲參數佔位符,而不是%s

sql = 'select * from banks_row_data where file_name = ?' 

但請注意,因爲您使用的是Django,您應該使用Django模型圖層來處理這種查詢。