2012-06-13 4 views
1
import MySQLdb 
import sys 

from libdesklets.controls import Control 
from IDBConnection import IDBConnection 

class DBConnection(Control, IDBConnection): 
    host = 'xxxx' 
    user = 'xxxx' 
    passwd = 'xxxx' 
    db = 'xxxx' 

def __init__(self): 
    Control.__init__(self) 
    pass 

def __get_dbconnection(self): 
    db = MySQLdb.connect(self.host, self.user, self.passwd, self.db) 
    return db 

def __insert(self): 
    db = self.__get_dbconnection() 
    cursor = db.cursor() 
    cursor.execute("INSERT INTO Usernotes (UID, NID, Inhalt) VALUES (3, 1, 'text');") 
    cursor.close() 
    db.close() 

def __select(self): 
    db = self.__get_dbconnection() 
    cursor = db.cursor() 
    cursor.execute("SELECT Inhalt FROM Usernotes WHERE UID = 1 AND NID = 1;") 
    cursor.close() 
    db.close() 

def __update(self): 
    db = self.__get_dbconnection() 
    cursor = db.cursor() 
    cursor.execute("UPDATE Usernotes SET Inhalt = 'inserttest' WHERE UID = 1 AND NID = 2;") 
    cursor.close() 
    db.close() 

insert = property(__insert, doc="insert into database") 
select = property(__select, doc="select from database") 
update = property(__update, doc="update database") 

def get_class(): return DBConnection 

Код выше, является управление для работы с MySQL-базы данных для gdesklets Linux (тот, где контроль импорта и импорта IDbConnection грядет из). Поэтому, когда мы вызываем свойства из другого файла (dbc.insert()/dbc.select()/dbc.update()), мы получаем ошибку «Объект« NoneType »не вызываем». Если мы добавим типы возвращаемых данных, мы получим, что объект «ReturnType» не может быть вызван ». Функции работают, и операции с базой данных выполняются, но файл отображения (где вызываются функции) падает после исключения.Python Database Connection объект «» NoneType не отозваны

Надеюсь, кто-то может нам помочь.

+0

Два намека: во-первых, задавая вопрос об ошибке, скопируйте/вставьте полное сообщение об ошибке, в котором есть много подсказок о том, где произошла ошибка. Во-вторых, ошибки в «NoneType» обычно означают, что функция вернула «Нет», когда вы этого не ожидали, начните искать там. –

ответ

0

Ваш запрос возвратил пустой набор, или значение столбца было нулевым.

Без особой ошибки, это сложнее сказать, но я думаю, что ваш выбор подходит с пустым набором.

Добавленное устанавливает UID = 3 и NID = 1, ваше обновление стремится изменить, где UID = 1 и NID 2, но ваш выбор ищет UID = 1 и НДИ = 1.

Я догадываясь, что это бомба.

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