2013-12-26 2 views
0

Вот мой SQL:MySQLDb, TypeError: неподдерживаемый тип операнда (ов) для /: 'ул' и 'Десятичные'

SELECT * FROM (SELECT sk, SUM(qty) AS cnt FROM order WHERE sk LIKE '%s%s' AND days <= '%s' GROUP BY sk ORDER by cnt DESC) AS tmp WHERE tmp.cnt >3; 

и вот мой код:

result = cur.fetchall() 
for sk, cnt in result: 
    rat = cnt/total 

я получить ошибку:

TypeError: unsupported operand type(s) for /: 'str' and 'Decimal' 

Я понятия не имею, почему cnt является типом str вместо int.

+0

Попробуйте использовать 'крысиный = Int (CNT)/итого' – fedosov

+0

это не поможет. Если изменить его на rat = int (cnt)/total, то произошла другая ошибка: ValueError: недействительный литерал для int() с базой 10: 'cnt' –

+0

Каковы типы cnt и toatal try int (cnt)/int (toatl). – Vb407

ответ

1

Вот проблема: каждая строка fetchall() является dict, который выглядит так {'sk': u'S0013', 'cnt': Decimal('1971')}cnt в результате является key из dict вместо value ..

Смежные вопросы