2014-11-04 106 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