simulace MySQL na Postgresu

Petr Skoda skoda na pleione.asu.cas.cz
Pondělí Srpen 1 18:35:09 CEST 2005


Omlouvam se za lehky off-topic, ale google selhal totalne
a predpokladam, ze lidi delajici s Postgresql ho provozuji na linuxu:

Potrebuju predelat skripty v pythonu pro  MySQLdb konektivitu
na pripojeni na PostgreSQL pres pyPgSQL balik. Oba implementuji rozhrani
API-DB , vysledky lezou pres kurzory apod ...

Jenze v tech skriptech se zada vypsat jmena vsech sloupcu z dane tabulky , 
s cimz se dal pracuje - konkretne se hledaji podle jmena sloupce v dane 
tabulce nejaka klicova slova v externich souborech, tedy pokud zmenim 
tabulku - pridam sloupce, chci je vedet v python slovniku.

Na to se v MySQLdb pouziva volani


kurzor = db.cursor()
kurzor.execute("SHOW FULL FIELDS FROM " + table)
data = kurzor.fetchall()


Ale bohuzel Postgres neumi ani toto ani jinde bezne
"select columns  from tabulka".

presne na toto se ptal nekdo i v postgres konferenci a odpoved byla 
bohuzel ze to umi jen klient psql (\d tabulka)
autori se vymlouvaji, ze je to slozite u objektu ale ze se obsah tohoto 
prikazu preklada do SQL, ale kdyz jsem si vypsal , nejsem z toho sachovani 
s internimi taulkami OIDy apod vubec moudry. Navic to nevraci jen sloupce 
ale i spoutu delasich veci o tabulce co nechci.
krome teto odpovedi/neodpovedi jsem uz nikde nic nenasel.

Je mi velmi divne, ze tuto funkci nikdo nepotreboval - nenajde se nekdo 
kdo by mi polopatisticky napsal jak to udelat ?

zde je vystup psql -E

testreticon=# \d reticon
********* QUERY **********
SELECT c.oid,
   n.nspname,
   c.relname
FROM pg_catalog.pg_class c
      LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
       AND c.relname ~ '^reticon$'
ORDER BY 2, 3;
**************************

********* QUERY **********
SELECT relhasindex, relkind, relchecks, reltriggers, relhasrules
FROM pg_catalog.pg_class WHERE oid = '17218'



Vubec tomu nerozumim, napr jak najdu ze mam pouzit 17218 ,
Navic ta funkce vraci i indexy apod, takze to stale neni ono

Diky za radu

*************************************************************************
*  Petr Skoda                         Tel   : (323) 649201, l. 361     *
*  Stelarni oddeleni                          (323) 620361, 620136     *
*  Astronomicky ustav AVCR            Fax   : (323) 620250             *
*  251 65 Ondrejov                    e-mail: skoda na sunstel.asu.cas.cz  *
*  Ceska republika                            pskoda na mbox.cesnet.cz     *
*************************************************************************


Další informace o konferenci Linux