sqlite3.DatabaseError

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Achimt
User
Beiträge: 19
Registriert: Montag 9. November 2009, 21:57

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
Zuletzt geändert von Anonymous am Freitag 11. Juni 2010, 15:41, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Code-Tags gesetzt.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
noisefloor
User
Beiträge: 4149
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

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.
„Lieber von den Richtigen kritisiert als von den Falschen gelobt werden.“
Gerhard Kocher

http://ms4py.org/
Antworten