MySQL - PostgreSQL - Spaltennamen ermitteln...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Donnerstag 9. Juni 2005, 10:13

Hallo zusammen,

ich suche nach einer Möglichkeit, die Spaltennamen einer PostreSQL Tabelle über die DB API 2.0 zu ermitteln. Bei MySQL erhält man die Spaltennamen mit "SHOW COLUMNS from table_name;". Bei PostgreSQL gibt es diese Form der Abfrage nicht. Dort erhält man die Spaltennamen über das psql-Tool mit dem command "\d tablename". Über ein Python DB API 2.0 Modul (PyPgSQL, mx.ODBC, etc.) kann ich diese Abfrage nicht stellen.

Kennt jemand einen Weg, wie ich die Spaltennamen (und ev. auch die Tabellennamen) von PostgreSQL via Python DB API Module ermitteln kann?

Tabellar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Donnerstag 9. Juni 2005, 12:47

Hallo,

durch eine Email von kompetenter Seite ;-) habe ich den Tipp bekommen, dass die gewünschten Info's in den Katalogtabellen von PostgreSQL stehen. Mit entsprechenden SQL Selects müsst ich also so die gewünschten Info's (Tabellennamen, Spaltennamen, Datentypen, etc) erhalten :P .

Tabellar
jgollers
User
Beiträge: 42
Registriert: Freitag 29. November 2002, 12:23
Wohnort: Kirchlengern

Montag 13. Juni 2005, 18:32

tabellar hat geschrieben:... habe ich den Tipp bekommen, dass die gewünschten Info's in den Katalogtabellen von PostgreSQL stehen.
Tabellar
Du meinst sicherlich den Katalog pg_class.

Weitere Info's unter

http://www.postgresql.org/files/documen ... class.html

oder

http://www.postgresql.org/docs/8.0/stat ... class.html


Jörg Gollers
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Freitag 17. Juni 2005, 11:44

Hi tabellar.

Wie Du sicher schon gemerkt hast, gibt es einige schöne Funktionalitäten von MySQL nicht mehr in Postgres. Um z.B. die Spaltennamen einer Tabelle zu erfahren musst Du Dich zuerst an der DB anmelden. dann folgenden befehl eingeben.

\d <tabellenname>


Ich denke, dass Du für Deine Zwecke Dir eine Routine basteln musst, die diesen befehl durchführt und die Datenrückgabe aufbereitet. So stantepedes fällt mir echt kein Befehl ein, der dies direkt über SQL bewerkstelligt. Muss dauz aber auch sagen, das ich noch nicht so lange mit Postgres arbeite. Solltest Du aber einen interessanten Weg gefunden haben, dann wäre es nett, wenn du diesen dann hier veröffentlichen würdest. Denn Deine Frage stellen sich bestimmt viele hier. *ggg*

Greetz from 2bock ;-)
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Freitag 17. Juni 2005, 12:28

Hi 2bock,

danke für Deinen Hinweis. Die oben genannte Frage steht im Zusammenhang mit dem Tread http://www.python-forum.de/viewtopic.ph ... 4&start=15
von rolgal. Dort habe ich eine Lösung für die PostgreSQL Geschichte (und noch ein bisschen mehr ... ) :wink: .

Gruss Tabellar
raist1314
User
Beiträge: 52
Registriert: Dienstag 21. September 2004, 06:58
Wohnort: Adelzhausen
Kontaktdaten:

Freitag 17. Juni 2005, 13:15

Also, wenn Du als Modul zum Zugriff auf Deine PostgreSQL Datenbank das Modul pyPgSQL http://pypgsql.sourceforge.net verwendest, dann sollte das eigentlich kein Problem darstellen. Such einfach in der Doku nach dem description Attribut des Cursor Objektes. Wenns nicht klappen sollte, dann sag Bescheid und ich seh mal, ob ich ein Beispiel zusammenkriege.

btw, stehts übrigens auch in der Python Database API Specification v2.0...

Sebastian
2bock_not_logged

Freitag 17. Juni 2005, 13:25

Bin gerade mal über Denen eintrag geflogen Tabellar. Sieht echt gut aus.
Rrespekt.

Gruß 2bock :-)
Antworten