4

WindowsでPython2.7.3でSQLAlchemyを使用してインメモリSQLiteデータベースを使用しようとしています。エンジンに接続できますが、2番目のステートメントを実行しようとすると、次のエラーが発生します。

>>>    engine=create_engine('sqlite:///memory:',echo=True)
>>>    engine.execute("select 1").scalar()

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 2445, in execute
connection = self.contextual_connect(close_with_result=True)
File "C:\Python27\lib\site-packages\sqlalchemy\engine\base.py", line 2489, in contextual_connect
self.pool.connect(),
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 236, in connect
return _ConnectionFairy(self).checkout()
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 401, in __init__
rec = self._connection_record = pool._do_get()
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 822, in _do_get
return self._create_connection()
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 189, in _create_connection
return _ConnectionRecord(self)
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 282, in __init__
self.connection = self.__connect()
File "C:\Python27\lib\site-packages\sqlalchemy\pool.py", line 344, in __connect
connection = self.__pool._creator()
File "C:\Python27\lib\site-packages\sqlalchemy\engine\strategies.py", line 80, in connect
return dialect.connect(*cargs, **cparams)
File "C:\Python27\lib\site-packages\sqlalchemy\engine\default.py", line 281, in connect
return self.dbapi.connect(*cargs, **cparams)
sqlalchemy.exc.OperationalError: (OperationalError) unable to open database file
None None
4

2 に答える 2

17

ファイル名は:memory:ではなく にする必要がありmemory:ます。(メモリ内データベースのドキュメントを参照してください)。関連する SQLAlchemy ドキュメントには、これがデフォルトのパスであると記載されているため、次を使用する必要があります。

engine=create_engine('sqlite://',echo=True)

あなたが得ているエラーは、おそらくmemory:Windows で有効なファイル名ではないためです。

于 2012-10-22T19:47:52.487 に答える