This is a bit can of worms.

Not all database divers are thread safe (in the sense that they allows
you to use the same open connection safely in multiple threads).
sqlite is not thread safe and to prevent problems it blocks access
from a different thread than the one that created the thread. The
programming error below is a sqlite error, not a web2py error.

Anyway, sqlite also allows you to avoid this check in case you really
need to use it in multiple threads but assumes you have a lock
mechanism to avoid problems.

The web2py in thunk disabled the check. I needed this in order to get
the web2py ajax shell working (and it is *almost* working). Disabling
the check allows you to access the db object from multiple threads but
does not avoid he underlying problems which may lead to database
corruption.

I really should recommend that you do not pass one db object between
threads. There many subtleties that can lead to data corruption. If
you really have to do it make sure you:
- implement a lock mechanism
- do not access the db object after the thread that created the object
has returned (because the connection is automatically close and
transaction committed).

Massimo



On May 15, 11:22 am, Kacper Krupa <[email protected]> wrote:
> Hi,
>
> I've written application which creates another thread and do things
> inside it. But why i can't use ORM in it? I'm using sqlite3 and i
> always get:
>
> ProgrammingError: SQLite objects created in a thread can only be used
> in that same thread.The object was created in thread id 28329984 and
> this is thread id 28687360
>
> Any ideas?
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py Web Framework" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to