[Twisted-Python] SQLite3 gives error when using adbapi

I am try to use a in-memory sqlite db via adbapi, but sqlite gives error:" OperationalError: *no such table*: test ". how can I made it work? This is my test code: from twisted.internet import reactor from twisted.enterprise import adbapi def create(): db.runOperation("create table test(id)").addCallback(result).addErrback(error) def insert(): db.runOperation("insert into test(id) values(1)").addCallback(result).addErrback(error) def select(): db.runQuery("""SELECT * FROM test""").addCallback(result).addErrback(error) def result(l): print l def error(fail): print fail db = adbapi.ConnectionPool("sqlite3", database=":memory:") reactor.callLater(0.1, create) reactor.callLater(1, insert) reactor.callLater(2, select) reactor.run()

On 09:24 am, sleeepd@gmail.com wrote:
I am try to use a in-memory sqlite db via adbapi, but sqlite gives error:" OperationalError: *no such table*: test ".
how can I made it work?
[snip]
db = adbapi.ConnectionPool("sqlite3", database=":memory:")
It doesn't make sense to use a connection pool for an in-memory SQLite3 database. Every time you connect to ":memory:", you get a brand new, empty database. If you want this to work, you need to be able to establish multiple connections to the same database. You could do that by making your own DB-API 2.0 module that wraps sqlite3 and always hands back the same :memory: connection when its connect function is called. Jean-Paul
participants (2)
-
exarkun@twistedmatrix.com
-
sleepd