[python] vytvoření proměnných

Jakub Vysoky jakub na borka.cz
Úterý Prosinec 21 21:13:17 CET 2010


Vyborne ;).

Tak v tomhle vam vazne nic nebrani pouzit dictionary.
Samozrejme byste to mohl nastavovat jak do locals(), tak
jako atributy tridy a podobne jine konstrukce, ale zase se
dostanete do opacneho problemu, jak zjistit, ktere promenne
mate nadefinovane. Opet by pomohl protikus setattru getattr,
ale akorat tak ucinite kod absolutne neprehledny.

Pokud potrebujete pomoct s praci se slovnikem, nevahejte se
ptat, ale jak exec, tak setattr se ve vasem pripade vyhnete.

Jinak take doporucuju SqlAlchemy, pripadne mozna jednodussi
pro zacatek bude webovy framework Django, ktery ma take sve
objektove relacni mapovani. I kdyz v tomhle konkretnim
pripade uz to chce lepsi znalost tech knihoven, protoze
mapovani objektu na jiz hotove tabulky muze byt trosku
tricky.

Drzim palce, Jakub.


2010/12/21 "Ing. Vladislav Ludík" <vlada na ludik.cz>:
> Mám stovky tabulek s různou strukturou , které vstupují do stránek. Některé
> hodnoty se zobrazují přímo a některé se modifikují,
>
> Na začátku ani nevím, jaké sloupce tabulka má a jak budou modifikovány.
> Tímto si jen ulehčím zápis v programu.:
>
>     tab = 'tabulka'
>     SQL = 'DESCRIBE `%s`' % tab
>     vysledek = sql(SQL)    # moje funkce sql(SQL) vykoná SQL příkaz
>
>     pole = {}   # zde uložím název sloupce a jeho typ
>
>     for radek in vysledek:
>         Field, Type, Null, Key, Default, Extra = radek
>         pole[Field] = Type
>
>     select = pole.keys()   # seznam sloupců
>     typy = pole.values()   # seznam typů
>
>     SQL = 'SELECT * FROM `%s`' % tab
>     vysledek = sql(SQL)
>
>     # využití různé, například jako přehled dat
>     for radek in vysledek:
>         for i in range(len(select)):
>             print '%s = %s' % (select[i],radek[i])
>
> Taky můžu ve formátování brát ohled na typ atd.
>
> V.L.
>
> Jakub Vysoky napsal(a):
>
> omlouvam se, ale neodpustim si otazku, k cemu to chcete pouzit. exec
> urcite muze mit nekdy sva opodstatneni, proc jej pouzit, ale asi
> bychom se k nemu meli uchylovat jen v opravdu nejkrajnejsich
> oblastech.
>
> jde vam jen o to si neco vyzkouset, nebo toto skutecne chcete pouzit v
> nejakem produkcnim kodu? tam bych spis doporucil pouzit dictionary,
> jak zminovali kolegove prede mnou.
>
> abych jen nementoroval: pro vas konkretni pripad by jeste byla moznost
> modifikovat globals() [1], ale asi bych se na to koukal podobne jako
> na ten exec.
>
> [1]
> http://www.faqs.org/docs/diveintopython/dialect_locals.html#dialect.locals.readonly.example
>
> mejte se.
>
> 2010/12/21 "Ing. Vladislav Ludík" <vlada na ludik.cz>:
>
>
> Funguje to skvěle:
>
> x = ['a','b','c','d','e','f']
> y = ['1','2','3','4','5','6']
>
> for element in zip(x,y):
>   exec ( '%s = %s' % element)
>
> print a, b, c, d, e, f
> 1 2 3 4 5 6
>
> print a + b + c + d + e + f
> 21
>
> V.L.
>
> Lansky, Milan napsal(a):
>
>
> exec(p1 + '=' + str(h1))
>
> -----Original Message-----
> From: python-bounces na py.cz [mailto:python-bounces na py.cz] On Behalf Of
> "Ing. Vladislav Ludík"
> Sent: Tuesday, December 21, 2010 12:45 AM
> To: Konference PyCZ
> Subject: [python] vytvoření proměnných
>
> Zdravím všechny,
>
> poradí někdo účinnou a jednoduchou metodu vytvoření spojení názvů
> proměnných s jejich hodnotami:
>
> x => {p1, p2, p3, ...pn}
> y => {h1, h2, h3, ...hn}
>
> kde p jsou proměnné a h jsou jejich hodnoty.
>
> Výsledkem by měly být deklarované proměnné s jejich hodnotami:
> p1 = h1
> p2 = h2
> p2 = h3
> .
> .
> pn = hn
>
>
> Díky, zdraví
>
> V.L.
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
> This e-mail and any attachment is for authorised use by the intended
> recipient(s) only. It may contain proprietary material, confidential
> information and/or be subject to legal privilege. It should not be copied,
> disclosed to, retained or used by, any other party. If you are not an
> intended recipient then please promptly delete this e-mail and any
> attachment and all copies and inform the sender. Thank you.
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
> __________ Informace od NOD32 5721 (20101221) __________
>
> Tato zprava byla proverena antivirovym systemem NOD32.
> http://www.nod32.cz
>
>
>
>
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>
>
>
>
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>



-- 
Jakub Vysoky

mob: +420 605 852 377
jab: jakub.vysoky na gmail.com
icq: 109248375
twit: https://twitter.com/kvbik


Další informace o konferenci Python