vin*_*eet 3 python sqlite sqlalchemy
我使用sqlalchemy连接到本地sqlite数据库.
这是我正在使用的代码 -
db = sqlalchemy.create_engine('sqlite:///Latencydb.db')
metadata = sqlalchemy.MetaData(db)
Run Code Online (Sandbox Code Playgroud)
即使文件不存在,也不会引发异常.即使db.connect()不抛出任何例外.
有没有办法检查数据库连接是否成功?(除了检查数据库中是否存在特定表之外?)
我在Python 2.7.2(Ubuntu)上使用sqlite 3.7.7和sqlalchemy 0.6.8
在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)
Run Code Online (Sandbox Code Playgroud)
在较新的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)
Run Code Online (Sandbox Code Playgroud)