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

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

うまくいけば、誰かがここで私たちを助けてくれます。

4

1 に答える 1

0

クエリが空のセットを返したか、列の値が null でした。

特定のエラーがなければ、言うのは難しいですが、あなたの選択は空のセットになっていると思います。

挿入は UID = 3 および NID = 1 を設定し、更新は UID = 1 および NID 2 を変更しようとしていますが、選択は UID = 1 および NID = 1 を探しています。

そこが爆撃の場所だと思います。

于 2012-06-13T15:35:22.867 に答える