[python] Zdrojový kód z databáze a identifikace chyby
Radek Kaňovský
rk na dat.cz
Pondělí Leden 23 09:39:39 CET 2006
On Sun, Jan 22, 2006 at 12:59:30PM -0800, Xeleos wrote:
> Ahoj,
>
> potřebuji uchovávat zdrojový kód v databázi. Pouštím ho funkcí
> exec. Když ale dojde k chybě během kódu, tak ve výpisu chyby je:
> File "", line 39, in ?
> Zajímalo by mě, zda jde zdrojový kód nějak identifikovat, abych si
> mohl nastavit vlastní název (číslo řádky v tabulce), který bych
> pak mohl při odchytávání chyby zpracovat?
> Moc děkuji za pomoc
Tohle jde celkem snadno, pouze se musi zdroj zkompilovat:
>>> src = '''print 1
... 1/0
... print 2
... '''
>>> code = compile(src, '<tabulka:klic>', 'exec')
>>> exec code
1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "<tabulka:klic>", line 2, in ?
ZeroDivisionError: integer division or modulo by zero
Zde je videt, ze se neco stalo v zaznamu s primarnim klicem "klic" v
tabulce "tabulka". Pokud byste chtel vypsat i ten konkretni radek
databazoveho zaznamu, na kterem se chyba vyskytla (tj. "1/0"),
tak to pujde mozna nejak pres vlastni funkci nastavenou do sys.excepthook.
Ted se misto "1/0" zobrazuje otaznik, protoze standardni exception
handler umi hledat zdrojove kody pouze v souborech.
Zdravi
Radek Kaňovský
Další informace o konferenci Python