2012-01-15 2 views
1

Я получил таблицу:MySQL-питон FetchRow приносит: TypeError: 'длинный' объект не вызываемая

 
+-----------+-------------+------+-----+---------+-------+ 
| Field  | Type  | Null | Key | Default | Extra | 
+-----------+-------------+------+-----+---------+-------+ 
| Benutzer | varchar(50) | YES |  | NULL |  | 
| Confirmed | tinyint(1) | YES |  | NULL |  | 
+-----------+-------------+------+-----+---------+-------+ 

с одной записью!

Если я исполняю на консоли тузда в оболочке:

select Benutzer from UserConfirm where Benutzer = '\{\'gid\'\:\ \'tamer\'\,\ \'uid\'\:\ \'tamer\'\}' 

это работает!

В MySQL-питона приходит в ErrorMessage:

TypeError: 'long' object is not callable 

Что я делаю не так ?! Вот мой питон код:

cursor = self.__db.cursor().execute('select * from UserConfirm where Benutzer = \'' + ds + '\'') 
return cursor().fetchrow() 

Для любого совета, я бы любезно спасибо.

+0

На стороне записки, я надеюсь, что ваш 'ds' переменная никогда не будет содержать строку«'; падение таблицы UserConfirm; -» –

ответ

0

Проблема заключается в том, что вы не хранить объект курсора, только возвращаемое значение выполнения, которое не является курсор, он должен быть:

cursor = self.__db.cursor() 
cursor.execute('select * from UserConfirm where Benutzer = \'' + ds + '\'') 
return cursor.fetchone() 
+0

, что один сделал это! – SmileMZ

+0

Я понимаю, что пример точен, но даже простые примеры всегда должны параметризоваться. –

0

Обратите внимание, что я предполагаю свою линию cursor().fetchrow() опечатка и вы имели в виду cursor.fetchrow().

Не знаю сам mysql-python, из-за ошибки, которую я могу предположить cursor.execute возвращает количество строк или код ошибки, а не сам курсор.

Попробуйте следующие вместо:

cursor = self.__db.cursor() 
cursor.execute('select * from UserConfirm where Benutzer = \'' + ds + '\'') 
return cursor.fetchrow()