在 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)