ponyorm / pony

Pony Object Relational Mapper
Apache License 2.0
3.64k stars 245 forks source link

SQLite in memory database does not work. OSError: Database file is not found #260

Open luckydonald opened 7 years ago

luckydonald commented 7 years ago

Following https://www.sqlite.org/inmemorydb.html:

db.bind("sqlite", filename="file:testdb?mode=memory&cache=shared")

But it failes:

  File "/path/to/Python/pony_up/example/example.py", line 6, in bind_to_database
    db.bind("sqlite", filename="file:testdb?mode=memory&cache=shared")
  File "<string>", line 2, in bind
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/utils/utils.py", line 58, in cut_traceback
    return func(*args, **kwargs)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/core.py", line 540, in bind
    self._bind(*args, **kwargs)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/core.py", line 556, in _bind
    self.provider = provider = provider_cls(*args, **kwargs)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbproviders/sqlite.py", line 253, in __init__
    DBAPIProvider.__init__(provider, *args, **kwargs)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbapiprovider.py", line 106, in __init__
    connection = provider.connect()
  File "<string>", line 2, in connect
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbapiprovider.py", line 48, in wrap_dbapi_exceptions
    try: return func(provider, *args, **kwargs)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbapiprovider.py", line 191, in connect
    return provider.pool.connect()
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbapiprovider.py", line 307, in connect
    pool._connect()
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/orm/dbproviders/sqlite.py", line 501, in _connect
    throw(IOError, "Database file is not found: %r" % filename)
  File "/path/to/Python/pony_up/virtualenv3.6.0.venv/lib/python3.6/site-packages/pony/utils/utils.py", line 96, in throw
    raise exc
OSError: Database file is not found: '/path/to/Python/pony_up/example/file:testdb?mode=memory&cache=shared'
luckydonald commented 7 years ago

Also :memory:?cache=shared doesn't work.