Attributeerror, aber wieso?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
FrostByteGER
User
Beiträge: 29
Registriert: Mittwoch 25. April 2012, 16:11

Moin,

ich habe folgendes Problem:
Ich arbeite momentan an einem kleinen einfachen Datenbankmodul womit ich meine Konten meiner Bankklasse besser sortieren und speichern kann. Soweit so gut, aber momentan bekomme ich immer einen AttributeError, beim Versuch "self.cur.execute(CREATE TABLE....)" auszuführen. ich kann mir leider nicht zusammenreimen wieso.

Genauer Fehlertraceback:

Code: Alles auswählen

  File "H:\Eclipse Workspace\Python - Bankklasse\src\Database.py", line 74, in <module>
    main.createTable()
  File "H:\Eclipse Workspace\Python - Bankklasse\src\Database.py", line 37, in createTable
    self.connection.execute("""CREATE TABLE Customers(
AttributeError: ARTEMISDB instance has no attribute 'connection'
Hier mal meiner kompletter Code:

Code: Alles auswählen

import sqlite3

class ARTEMISDB():

    def __init__(self):
        pass
    
    def createDB(self):
        self.connection = sqlite3.connect("ARTEMIS_Database.db")
        self.cur = connection.cursor()


#----------------------------------------------------------------------------

    def checkDB(self):
    
        try:
            db = open("ARTEMIS_Database.db")
            print "Database found, loading tables"
        
        except IOError:
            print "Database not found, creating one..."
            createDB()

#----------------------------------------------------------------------------
    
    def createTable(self):
    
        self.cur.execute("""CREATE TABLE Customers(
                                              Name TEXT,
                                              Surname TEXT,
                                              Age TEXT,
                                              Customernumber TEXT)""")
        
        self.connection.commit()
                                              
        self.cur.execute("""CREATE TABLE Accounts(
                                             Accountnumber TEXT,
                                             PIN INTEGER,
                                             Value INTEGER,
                                             Currency TEXT)""")
                                             
        self.connection.commit()

#----------------------------------------------------------------------------

    def loadDB(self):
        pass

#----------------------------------------------------------------------------

    def saveDB(self):
        pass

#----------------------------------------------------------------------------

    def editDB(self):
        pass

#----------------------------------------------------------------------------
                        
if __name__=="__main__":
    
    main = ARTEMISDB()
    main.checkDB()
    main.createTable()
Mein Konstruktor ist momentan noch leer, da ich noch keine komplette Liste mit den einzelnen benötigten Variablen habe(Bekomme ich erst am Abend von meinem Freund)

Connection in den Konstruktor zu schmeissen macht keinen Sinn, da ich den ja extra mit einer Methode bei bedarf aufrufen will.

Kann mir einer evtl. helfen?
Zuletzt geändert von FrostByteGER am Donnerstag 24. Mai 2012, 13:23, insgesamt 1-mal geändert.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Woher soll createTable denn auch wissen, dass es so etwas wie self.cur gibt? Das wird ja von dir vorher nirgends angelegt. Hast du vielleicht einfach vergessen createDB aufzurufen?

Bei deinem nächsten Fehler solltest du am besten auch den ganzen Traceback posten, der gibt nämlich an, wo sich der Fehler befindet, was für ein Fehler genau aufgetreten ist wie man zum Fehler gelangt ist. Dann spart man sich das suchen im Quellcode.

Sebastian
Das Leben ist wie ein Tennisball.
FrostByteGER
User
Beiträge: 29
Registriert: Mittwoch 25. April 2012, 16:11

omg ich muss mich jetzt echt selbst schämen :oops: :mrgreen:
Ich hab ganz vergessen, dass die Datenbank ja angelegt wird, da ich das Programm mehrfach durchlaufen hab lassen, existiert ja bereits eine. Daher lädt der ja die CreateTable() Methode garnicht...

Und ich such seit ner Stunde den Fehler-.-

Shit bin ich wieder mal genial >.<
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Und bitte lass dieses

Code: Alles auswählen

#----------------------------------------------------------------------------
das ist sowas von nervig! :evil:

Edit: nicht böse gemeint :)

Grüße,
anogayales
FrostByteGER
User
Beiträge: 29
Registriert: Mittwoch 25. April 2012, 16:11

xD Das verwende ich gerne zum trennen der einzelnen Methoden/Funktionen^^
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

FrostByteGER hat geschrieben:xD Das verwende ich gerne zum trennen der einzelnen Methoden/Funktionen^^
Reichen Dir da zwei Leerzeilen nicht? ;-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
jbs
User
Beiträge: 953
Registriert: Mittwoch 24. Juni 2009, 13:13
Wohnort: Postdam

Ich sag mal so. Das letzte mal, dass ich sowas gesehen habe, war an einer Berufsschule im schönen Utbremen ;).
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
Antworten