gpt4 book ai didi

python - 检查sqlalchemy中的sqlite连接错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:50:15 24 4
gpt4 key购买 nike

我正在使用 sqlalchemy 连接到本地 sqlite 数据库。

这是我正在使用的代码 -

db = sqlalchemy.create_engine('sqlite:///Latencydb.db')
metadata = sqlalchemy.MetaData(db)

即使文件不存在也不会引发异常。甚至 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)

在较新的 Python 版本中,sqlite3 库支持 SQLite URI syntax , 所以你可以指定一个 mode=rw 参数来禁用默认的 rwc (read-write-create) 模式,前提是你设置了 uri=Truesqlite3.connect() 调用上。

SQLAlchemy 不支持 SQLite URI 参数(目前),但您可以使用 creator parameter传入 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)

关于python - 检查sqlalchemy中的sqlite连接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11766059/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com