[python] zmatený python?

Petr Mach gsl na seznam.cz
Sobota Červen 11 14:19:27 CEST 2005


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
------------- daląí část ---------------
[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