[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