Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Веб-разработка и фреймворки > Sql возвращаемые значения


Автор: ecspertiza 23.3.2010, 16:24
Всем привет! Использую Python 2.6 +Django 1.1.1 Нужно сделать запрос к БД, не использую модели ибо запрос будет довольно сложный и с моделями придется помучатся, делаю вот что

создаю класс

Код


class itemSubject():
    
    def __init__(self):
        self.name = ''
        self.left_id = 0
        self.right_id = 0

 

список таких классов нужно будет вернуть шаблону

далее сама ф-ция 

Код

def loadSubjectQuery(left_id,right_id):    
    cursor = connection.cursor()
    cursor.execute("select `name`,`left`,`right` subject")
    
    sp = []
    
    for row in cursor.fetchone():
        i = itemSubject()
        i.name = row[0]
        i.left_id = row[1]
        i.right_id = row[2]
        sp[1:1] = [i]
    
    return sp


И вроде бы все не плохо но в этом месте мне Django выдает ошибочку 
Код

Exception Type:    TypeError
Exception Value:    'long' object is unsubscriptable


Не подскажете к чему бы это могло быть?

если например написать вот так

Код

        i.name = 'name'
        i.left_id = 1
        i.right_id = 2


то тогда все хорошо отрабатывает, я так думаю что row[0] возвращает не тот тип? или я неправ?

Автор: ecspertiza 23.3.2010, 17:04
я шляпа smile стоило написать fetchall вместо fetchone

Автор: _Viper_ 23.3.2010, 19:44
Поидее можно написать просто "for row in cursor" и это будет оптимальней, чем  fetchall.

Автор: ecspertiza 24.3.2010, 09:03
Да точно, можно, так гораздо оптимальнее, спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)