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.
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

MySQL - PostgreSQL - Spaltennamen ermitteln...

Beitragvon tabellar » 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
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » 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
Benutzeravatar
jgollers
User
Beiträge: 42
Registriert: Freitag 29. November 2002, 12:23
Wohnort: Kirchlengern

Beitragvon jgollers » 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
Benutzeravatar
2bock
User
Beiträge: 94
Registriert: Freitag 12. September 2003, 07:58
Wohnort: 50.9333300 / 6.3666700

Beitragvon 2bock » 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 ;-)
Benutzeravatar
tabellar
User
Beiträge: 186
Registriert: Mittwoch 4. September 2002, 15:28

Beitragvon tabellar » 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.php?t=3064&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:

Beitragvon raist1314 » 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

Hey echt gut.

Beitragvon 2bock_not_logged » Freitag 17. Juni 2005, 13:25

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

Gruß 2bock :-)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder