[python] zmatený python?
pavel.kosina
geon na post.cz
Sobota Červen 11 14:31:33 CEST 2005
Mě toto:
import sqlite
dbfile='aaa.dbf'
db=sqlite.connect(dbfile, encoding="utf-8")
proběhne v pohodě. I s nainstalovanym nebo smazanym PIL. Není někde chyba v tvym dbfile? A není
kolize jmen self.db a db? (střílím)
geon
Vyjímka je pravidlo. Rekurzivní.
Petr Mach napsal(a):
> Mám takovou nevážnou záhadu. Píšu program, který používá
> SQLite a teď testuju jeho oddolnost a robustnost. Mimo jiné
> při prvotním plnění databáze daty (její inicializace)
> klinu python, smažu soubor databáze a spustím ji znovu.
>
> Teoreticky, protože je ten soubor smazaný, by se nemělo
> vůbec nic dít, program nemá jak vědět, že při minulém
> spuštění se něco nepovedlo, jenž to tak není a on spadne
> na výjimku. Při dalším spuštění pak už funguje jak má.
>
> Největší záhadou je na tom ta výjimka. Posílám ji jako
> přílohu. Nechapu, jak prikaz:
>
> import sqlite as db
> self.db=db.connect(dbfile, encoding="utf-8")
>
> Muze lezt do:
>
> File "/usr/lib/python2.3/site-packages/PIL/__init__.py", line 61, in
> connect
>
> Zvlast kdyz knihovnu PIL v programu vubec nepouzivam a
> predevsim, uvedeny soubor ma jen 13 zakomentovanych radku.
> Napada nekoho, proc Python hlasi tento falesny soubor?
>
> Dalsi uvedeny soubor:
>
> File
> "/dar/tmp/python-sqlite-0.5.0-1.1.fc3.rf-root//usr/lib/python2.3/site-packages/sqlite/main.py"
>
>
> je uz uplne mimo, neco jako /dar/tmp/python-sqlite-0.5.0-1.1.fc3.rf-root/
>
> na pocitaci vubec nemam. Odkud Python bere ty cesty
> kdyz se neridi skutecnosti?
>
> Je to jen pro teoreticke zamysleni, prakticky me to
> nijak netrapi. Jen bych rad vedel, co se odehrava na
> pozadi.
>
> Petr Mach
>
>
> ------------------------------------------------------------------------
>
> [wraith na frodo erzety-svr]$ ./init
> 050611-135425.196 LOG[init] DB file is: /home/wraith/tmp/l1.db
> 050611-135428.198 LOG[DB] [fce] __init__
> Traceback (most recent call last):
> File "svr.py", line 72, in ?
> server=Server(("", svrPort), Handler, dbFile)
> File "/mnt/flash/data/projekty/erzety/svr/s_main.py", line 68, in __init__
> self.db=Db(self.log, dbFile)
> File "/mnt/flash/data/projekty/erzety/svr/s_db.py", line 21, in __init__
> self.db=db.connect(dbfile, encoding="utf-8")
> File "/usr/lib/python2.3/site-packages/PIL/__init__.py", line 61, in connect
>
> File "/dar/tmp/python-sqlite-0.5.0-1.1.fc3.rf-root//usr/lib/python2.3/site-packages/sqlite/main.py", line 436, in __init__
> _sqlite.DatabaseError: file is encrypted or is not a database
> Exception exceptions.AttributeError: <exceptions.AttributeError instance at 0xb7f960ec> in <bound method Connection.__del__ of <sqlite.main.Connection instance at 0xb7c26fcc>> ignored
>
Další informace o konferenci Python