simulace MySQL na Postgresu

Jan Marek jmarek na jcu.cz
Středa Srpen 3 14:48:23 CEST 2005


Ahoj Petre,

On Mon, Aug 01, 2005 at 06:35:09PM +0200, Petr Skoda wrote:
> 
> kurzor = db.cursor()
> kurzor.execute("SHOW FULL FIELDS FROM " + table)
> data = kurzor.fetchall()
> 
> 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'

zkusil sis ty SELECT-y provest rucne?

Z prvniho radku ti vypadne nazev tabulky + jeji OID a toto OID
(to je to cislo '17218') pak doplnujes dale do dalsich dotazu...

Zkus si je postupne provest, uvidis, co ti vypisou...

Pro ostatni, co psali pozdeji: nejedna se o reseni v php, ale
pythonu, ktery vysledky do asociativniho pole (bohuzel) nedava
:-( Ale hodilo by se to...

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

Odhadoval bych, ze napr. vynechani polozky 'relhashindex'
v druhem dotazu ti vynecha indexy... Vyzkousej.

Jeste jsem nasel jednu moznost:

Pokud pouzivas pro pristup do PostGreSQL python-psycopg, pak
existuje jeste jedna moznost, jak zjistit jmena sloupecku:

kurzor = db.cursor()
kurzor.execute("""Prislusny SELECT""")
kurzor.description - tato funkce vypise ta jmena sloupecku
a k nim jeste nejake dalsi veci. Pokud potrebujes pouze jmena
sloupecku, pak se daji vypsat takto:

colnames = [t[0] for t in kurzor.description]

Dalsi zajimave veci (aneb jak udelat i to asociativni pole) lze
nalezt zde (ostatne i predchozi navod odtud cerpal):

http://initd.org/tracker/psycopg/wiki/PsycopgTwo


> 
> Diky za radu
> 
> *************************************************************************
> *  Petr Skoda                         Tel   : (323) 649201, l. 361     *

Mej se...
Honza
-- 
Ing. Jan Marek               | Nez mi poslete prilohu .doc, .xls 
University of South Bohemia  | nebo .ppt, prectete si, prosim,
Academic Computer Centre     | WWW stranku uvedenou na poslednim
Phone: +420-38-9032080       | radku signatury...
http://www.gnu.org/philosophy/no-word-attachments.cs.html


Další informace o konferenci Linux