Seite 1 von 1

sqlite3.DatabaseError

Verfasst: Freitag 11. Juni 2010, 12:34
von Achimt
Ich bekomme seit kurzem folgenden Fehler:


sqlite3.DatabaseError: malformed database schema (TABELLE1) - near "NO": syntax error


Ich verwende Python 2.6 und sqlite3

Kann mir jemand verraten, um was es sich für einen Fehler handelt? Bis hat es ganz normal funktioniert, am pyhton-Script hatte ich nix geändert, aber mittels SQLiteMaestro neue Tabellen in die DB eingefügt.

Code: Alles auswählen

def Funktion(PfadDatenbanken, X, Y):

    connSpieler = sqlite3.connect(PfadDatenbanken+"Spieler.db3")
    cursorSpieler = connSpieler.cursor()
    sql =   "SELECT \n" + \
            "   Tab1, \n" + \
            "   Tab2, \n" + \
            "   Tab5 \n" + \
            "FROM TABELLE1 \n" + \
            "WHERE Tab3 =? AND Tab4 =? \n"

    DB_geblockt = True
    while DB_geblockt:
        DB_geblockt = False
        try:
            cursorSpieler.execute(sql, (X, Y))
        except sqlite3.OperationalError, Fehler:
            Fehlertext = str(Fehler)
            if "database is locked" in Fehlertext:
                DB_geblockt = True
                Ausgabetext = Ausgabetext + "Datenbank Spieler geblockt. Neuer Versuch\n"
                print "Datenbank Spieler geblockt. Neuer Versuch\n"
            else:
                print "sqlite3.OperationalError: " + Fehlertext
                print "anderer Fehler"
                sys.exit(0)
    Datensatz = cursorSpieler.fetchall()
    connSpieler.close()

    return Datensatz
Danke für Eure Hilfe

Re: sqlite3.DatabaseError

Verfasst: Freitag 11. Juni 2010, 15:13
von Hyperion
Achimt hat geschrieben: Kann mir jemand verraten, um was es sich für einen Fehler handelt? Bis hat es ganz normal funktioniert, am pyhton-Script hatte ich nix geändert, aber mittels SQLiteMaestro neue Tabellen in die DB eingefügt.
Dann hast Du da eben einen Fehler gemacht ;-)

Wenn, dann müßtest Du uns mal einen Dump der create-Statements posten...

Zum Quellcode sollte man einiges sagen, aber WM läuft grad :-D

Re: sqlite3.DatabaseError

Verfasst: Samstag 12. Juni 2010, 19:58
von noisefloor
Hallo,

@Achimet: Wann bekommst du den Fehler und bei welchem Query?
Zum Quellcode sollte man einiges sagen, aber WM läuft grad
Stimmt, aber USA vs. England interessiert mich nicht so.

Zum Code ein paar Sachen:
  • Warum um alles in der Welt zerlegst du den SQL-Query in diese Stückchen? Das kann man doch genau so gut in einem String durch schreiben...
  • Warum lagerst du den Query in den Wert "sql" aus? Der Query läuft in deiner Funktion genau 1x.
  • Welchen Sinn hat die Zeile "Ausgabetext = Ausgabetext + "Datenbank Spieler geblockt. Neuer Versuch\n"? 1. Ist Ausgabetext vorher nicht definiert, zweitens kommt Ausgabetext danach nicht mehr vor...
  • Was bedeutet der Fehler "database is locked"? Unterstützt SQLite nicht mehrere Verbindungen pro DB?
Gruß, noisefloor

Re: sqlite3.DatabaseError

Verfasst: Sonntag 13. Juni 2010, 11:39
von ms4py
noisefloor hat geschrieben:
  • Was bedeutet der Fehler "database is locked"? Unterstützt SQLite nicht mehrere Verbindungen pro DB?
SQLite unterstützt keine parallelen Schreibzugriffe. Bei einem "SELECT" ist das Abfangen von diesem Fehler allerdings komplett unnötig.