Hi Tom!<div><br></div><div>Yes, Pony ORM can be used from multiple thread, if (as in your example), each thread uses its own db session. But SQLite in-memory database can have only one connection. Because of this, SQLite in-memory database cannot be used from multiple threads. Try to specify database file name, and all should works as expected.</div>
<div><br></div><div>I think that Pony ORM should check if somebody tries to access SQLite in-memory database from multiple threads, and generate appropriate error message. I'll fix it in next release.</div><div><br></div>
<div>Regards,</div><div>Alexander</div><div><br><br>On Sunday, July 27, 2014, Tomislav Tustonic <<a href="mailto:tomislavtustonic@outlook.com">tomislavtustonic@outlook.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div><div dir="ltr"><p>Hello
<br>
<br>Is it possible to run a Pony ORM query in a different thread.
<br>In the following example the first call to 'printPersons' works fine, but the 
call from the thread throws an exception:
<br>OperationalError: no such table: Person
<br>
</p><p><br>from pony.orm import *
<br>import threading
<br>
<br>db = Database('sqlite', ':memory:')
<br>class Person(db.Entity):
<br>    name = Required(unicode)
<br>    age = Required(int)
<br>db.generate_mapping(create_tables=True)
<br>with db_session:
<br>    p1 = Person(name="Bing Bang", age="31")
<br>    p2 = Person(name="Kick Mick", age="75")
<br>
<br>def printPersons():
<br>    print "print persons: "
<br>    with db_session:
<br>        ps = Person.select(lambda p: True)
<br>        for p in ps:
<br>            print <a href="http://p.name" target="_blank">p.name</a>
<br>
<br>printPersons()
<br>print "-------------------------"
<br>ppt = threading.Thread(target = printPersons)
<br>ppt.daemon = True
<br>ppt.start()
<br>a = raw_input('[Enter]')
<br>
</p><p> </p><p><br>Thanks in advance,
<br>Tom
</p>                                        </div></div>
</blockquote></div>