MS SQL Server 2005 Abfrage mit Python

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Helpless
User
Beiträge: 7
Registriert: Donnerstag 5. Februar 2009, 12:09

Hallo,

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?

Vielen Dank im Vorraus
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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".

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Helpless
User
Beiträge: 7
Registriert: Donnerstag 5. Februar 2009, 12:09

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...
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Du musst vorher noch pyodbc installieren.
Das Leben ist wie ein Tennisball.
Helpless
User
Beiträge: 7
Registriert: Donnerstag 5. Februar 2009, 12:09

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...
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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
Antworten