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
上記のコードは、Linux gdesklets 用の mysql-Database で動作するコントロールです (インポート コントロールとインポート IDBConnection はそこから来ています)。そのため、別のファイル (dbc.insert() / dbc.select() / dbc.update()) からプロパティを呼び出すと、「'NoneType' object is not callable」というエラーが発生します。戻り値の型を追加すると、「'ReturnType' オブジェクトは呼び出し可能ではありません」というメッセージが表示されます。関数は機能しており、データベース操作は完了していますが、表示ファイル (関数が呼び出される場所) は例外の後にクラッシュします。
うまくいけば、誰かがここで私たちを助けてくれます。