ich fange gerade mit Python an und verstehe einfach nicht, warum die Klassenmethode "testen" nicht gefunden wird.
Die Fehlermeldung lautet:
(es wundert mich schon, dass die Fehlermeldung auf ein Attribut hinweist...)AttributeError: 'Datenbank' object has no attribute 'testen'
Die IDE (Spyder) erkennt die Methode, dennoch muss ich irgendetwas mit "db." übersehen...
Python: 3.4.3 (Anaconda 2.3.0)
Mac OsX 10.10.5
Zum Testen der Klasse verwende ich ein Modul namens Test.py:
Code: Alles auswählen
import Datenbank
db = Datenbank.Datenbank('testdatei.db')
db.testen()
Der SQL Teil dient nur zu Testzwecken und ist nicht Teil des späteren Programms, daher bitte ignorieren.
Code: Alles auswählen
import sqlite3
class Datenbank:
def __init__(self, datenbankname):
self.datei = datenbankname
self.connection = sqlite3.connect(datenbankname)
def testen(self):
self.cursor = self.connection.cursor()
self.sql_command = """
CREATE TABLE employee (
staff_number INTEGER PRIMARY KEY,
fname VARCHAR(20),
lname VARCHAR(30),
gender CHAR(1),
joining DATE,
birth_date DATE);"""
self.cursor.execute(self.sql_command)
self.sql_command = """INSERT INTO employee (staff_number, fname, lname, gender, birth_date)
VALUES (NULL, "William", "Shakespeare", "m", "1961-10-25");"""
self.cursor.execute(self.sql_command)
self.sql_command = """INSERT INTO employee (staff_number, fname, lname, gender, birth_date)
VALUES (NULL, "Frank", "Schiller", "m", "1955-08-17");"""
self.cursor.execute(self.sql_command)
# never forget this, if you want the changes to be saved:
self.connection.commit()
self.connection.close()
die komplette Fehlermeldung: (einige Zeilen habe ich entfernt, daher stimmen die Zeilennummern nicht)
>>> runfile('/Users/Roger/anaconda/Nebenkosten/Test.py', wdir='/Users/Roger/anaconda/Nebenkosten')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/Roger/anaconda/lib/python3.4/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "/Users/Roger/anaconda/lib/python3.4/site-packages/spyderlib/widgets/externalshell/sitecustomize.py", line 85, in execfile
exec(compile(open(filename, 'rb').read(), filename, 'exec'), namespace)
File "/Users/Roger/anaconda/Nebenkosten/Test.py", line 11, in <module>
db.testen()
AttributeError: 'Datenbank' object has no attribute 'testen'