Beschäftige mich erst seit kurzem mit Python und stehe vor folgendem Problem: Ich versuche ein Python-Script zu entwerfen, mit dem auf eine MS SQLSERVER 2005 Datenbank zugegriffen werden soll. Zunächst einmal soll dazu eine Ausgabe der vorhandenen Tabellen erfolgen. Doch wie bekomme ich die? Googlesuche brachte mir nur den Befehl "SHOW TABLES", dabei kommt es allerdings zur Fehlermeldung
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\nadine\Desktop\pyth\AbfrageNeu.py", line
43, in <module>
db.select()
File "C:\Dokumente und Einstellungen\nadine\Desktop\pyth\AbfrageNeu.py", line
23, in select
cur.execute("show tables")
dbi.program-error: [Microsoft][ODBC SQL Server Driver][SQL Server]Die gespeicher
te Prozedur 'show' wurde nicht gefunden. in EXEC
Muss ich dazu irgendein Modul importieren? (Bisher nur dbi und odbc) Oder gibt es vielleicht eine andere Möglichkeit, mir die Tabellennamen anzeigen zu lassen?
Helpless hat geschrieben:(Bisher nur dbi und odbc) Oder gibt es vielleicht eine andere Möglichkeit, mir die Tabellennamen anzeigen zu lassen?
Hallo Helpless!
Mein Tipp: Verwende **pyodbc**. Das ist ausgereifter als das ODBC-Modul der win32-Erweiterung.
Der MS SQL-Server hat Systemtabellen, in denen alle Informationen abgefragt werden können. Suche in der Dokumentation z.B. nach "Systemtabellen", "Abrufen von Informationen" oder "sysobjects".
Hallo Gerold,
danke für die schnelle Antwort.
Der Versuch pyodbc zu importieren ergab folgendes:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\nadine\Desktop\pyth\AbfrageNeu.py", line
3, in <module>
import pyodbc
ImportError: No module named pyodbc
unter den Systemtabellen finde ich nur sysdiagrams. Ene Abfrage nach deren Inhalt bringt mir aber leider keine Tabellennamen...
oh, ok. Ist jetzt installiert, aber "Show" sei immernoch nicht bekannt.
Gibt´s denn keinen anderen Befehl? Irgendwie muss ich doch an die Tabellennamen rankommen...
Helpless hat geschrieben:aber "Show" sei immernoch nicht bekannt
Hallo Helpless!
Das habe ich auch nicht geschrieben. Ich habe dir den Hinweis auf die Systemtabellen gegeben. Diese kannst du mit SELECT abfragen. Und die Information, welche Tabellen es gibt, findest du in der "sysobjects"-Tabelle.
Vergiss "SHOW". So etwas gibt es vielleicht für ein anderes Datenbankmanagementsystem -- aber nicht für den MS SQL-Server. Es kann natürlich sein, dass so etwas seit MS SQL-Server 2000 dazugekommen ist. Dann wäre es mir nicht aufgefallen, da ich die neueren Versionen nicht mehr benutze.
gerold hat geschrieben:Vergiss "SHOW". So etwas gibt es vielleicht für ein anderes Datenbankmanagementsystem -- aber nicht für den MS SQL-Server. Es kann natürlich sein, dass so etwas seit MS SQL-Server 2000 dazugekommen ist. Dann wäre es mir nicht aufgefallen, da ich die neueren Versionen nicht mehr benutze.
Oder es ist möglich, dass es einfach nur eine Erweiterung in der SQL-Konsole ist. ``psql`` hat auch massig Befehle wie ``\d`` und ``\dt`` etc. die nur in der Konsole gültig sind.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice