Pythonバージョン<3.4(Python 2.7を含む)では、まだ存在していないSQLiteデータベースファイルに接続するときに、SQLiteがファイルを作成するのを防ぐことはできません。
したがって、古いバージョンのPythonでは、最初にファイルの存在をテストするためにさまざまな手段を使用する必要があります。単純なos.path.exists
もので十分です。
import os.path
database = '/path/to/database.db'
if not os.path.exists(database):
raise ValueError('Invalid database path: %s' % (database,)
db = sqlalchemy.create_engine('sqlite:///' + database)
新しいPythonバージョンでは、sqlite3
ライブラリはSQLite URI構文をサポートしているため、呼び出しで設定した場合は、パラメーターを指定しmode=rw
てデフォルトrwc
(読み取り-書き込み-作成)モードを無効にすることができます。uri=True
sqlite3.connect()
SQLAlchemyは(まだ)SQLite URIパラメーターをサポートしていませんが、creator
パラメーターを使用してURIフラグと独自の接続文字列を渡すことができます。
import sqlite3
uri = 'file:/path/to/database.db?mode=rw'
creator = lambda: sqlite3.connect(uri, uri=True)
db = sqlalchemy.create_engine('sqlite:////', creator=creator)