2014-11-04 108 views
1
lists = [] 
lists = cursor.execute(
    "select a.employee_id,a.first_name," 
    "c.breakfast_count, b.lunch_count," 
    "d.dinner_count from qpscsmas_employee_details a," 
    "qpscsmas_emp_lunch b," 
    "qpscsmas_emp_breakfast c," 
    "qpscsmas_emp_dinner d " 
    "where a.rfidcardno = %s " 
    "and b.rfidcardno = %s " 
    "and c.rfidcardno = %s " 
    "and d.rfidcardno = %s," 
    "['s','s','s','s']" 
) 
print lists 

上面的查詢給了我一個空的列表。Django原始查詢

問題在於它也沒有顯示任何錯誤。

它是在MySQL工作正常,當我在地方的參數

+0

正是你的問題是什麼??? – 2014-11-04 05:26:35

+0

我的問題是,我無法傳遞參數,更具體地說,我需要在querey中使用參數的方式。 我附加了工作正常的querey。 cursor.execute(從qpscsmas_employee_details a選擇a.employee_id,a.first_name,c.breakfast_count,b.lunch_count,d.dinner_count,qpscsmas_emp_lunch b,qpscsmas_emp_breakfast c,qpscsmas_emp_dinner d其中a.rfidcardno ='7b5c7f45'和b.rfidcardno = '7b5c7f45'和c.rfidcardno ='7b5c7f45'和d.rfidcardno ='7b5c7f45') – 2014-11-04 06:48:56

回答

1

首先,你需要從參數列表中刪除雙引號,並將它與您的查詢字符串,如逗號分隔的給出精確值:

cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz]) 

執行查詢後,您需要獲取行,請參閱Executing custom SQL directly。您可以獲取下一個(cursor.fetchone())或獲取所有行(cursor.fetchall())。

例子:

row = cursor.fetchone() 
rows = cursor.fetchall() 

此清理查詢應該工作:

cursor.execute(
    "select a.employee_id,a.first_name," 
    "c.breakfast_count, b.lunch_count," 
    "d.dinner_count from qpscsmas_employee_details a," 
    "qpscsmas_emp_lunch b," 
    "qpscsmas_emp_breakfast c," 
    "qpscsmas_emp_dinner d " 
    "where a.rfidcardno = %s " 
    "and b.rfidcardno = %s " 
    "and c.rfidcardno = %s " 
    "and d.rfidcardno = %s", 
    ['s','s','s','s'] 
) 
+0

我做了同樣的事情,但沒有返回任何數據。這就是爲什麼我要求我通過參數的方式是正確的方式嗎? – 2014-11-04 07:01:15

+0

從您的參數列表中刪除雙引號。 – 2014-11-04 07:02:30

+0

好的,這可能適用於單個參數,但如果參數不止一個,會發生什麼情況。舉一個例子,其中使用了多個參數。 – 2014-11-04 07:08:20