sqlalchemy: "-" in Tabellenname

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Hallo,

ich versuche aus einer sqlite bzw. MS-Access Datenbank mittels SQLAlchemy eine Tabelle abzufragen. Die Krux: Der Tabellenname enthält ein "-" (kann ich leider nicht ändern). Wenn ich jetzt versuche, diese Tabelle zu erstellen, fliegt mir SQLAlchemy um die Ohren:

Code: Alles auswählen

engine = sa.create_engine("pfad")
meta = sa.MetaData(engine)

articles = sa.Table("Ta-Artikel", meta, autoload=True)
führt zu:

Code: Alles auswählen

OperationalError: (OperationalError) near "-": syntax error u'PRAGMA index_info(sqlite_autoindex_Ta-Artikel_1)' ()
Den selben Fehler erhalte ich auch, wenn ich einfach nur 'meta.reflect()' eingebe.

Ich habe auch schon versucht, quote=True zu setzen, obwohl der Name laut Dokumentation wohl aufgrund der Groß-/Kleinschreibung automatisch in Anführungszeichen gesetzt werden soll.

Jetzt gehen mir langsam die Ideen aus, was ich da noch machen könnte - ist jemand von euch schon mal in eine ähnliche Situation geraten und hat sich erfolgreich herauswinden können?
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Also im PEP 249 findet sich folgendes:
OperationalError

Exception raised for errors that are related to the
database's operation and not necessarily under the control
of the programmer, e.g. an unexpected disconnect occurs,
the data source name is not found, a transaction could not
be processed, a memory allocation error occurred during
processing, etc. It must be a subclass of DatabaseError.
Es wird wohl also mit der Datenbank an sich zu tun haben. Hast Du mal versucht, das ganze ohne Python (irgend ne Shell o.ä., SQuirreL, ...) abzufragen? Evtl. kommt da ja auch schon ein Fehler ...
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Ja. Auf die Access-Datenbank habe ich ohne Probleme direkt mit Pyodbc zugreifen können. Wenn ich den Tabellennamen in Quotes packe, ist das kein Problem. Ebenso bei Sqlite. Nur sobald ich SQLAlchemie als Zwischenschicht einsetze, geht es nicht mehr.
Antworten