我在将现有数据库连接到 QSqlDatabase 实例时遇到问题。可以这样做吗?
我已经阅读了大量与此问题相关的帖子;他们中的大多数人暗示至少可以做到这一点。然而,我一直没能做到。这似乎也是一个非常简单的过程。
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("moves.sqlite") # this is the name of the database. It's on the same line directory as this code
# db.setDatabaseName(os.path.abspath("./moves.sqlite"))
opened = db.open()
if not opened:
print("database not found!")
return
我最终收到打印消息“未找到数据库!”。我应该能够打开数据库并对其执行查询。我的 QSqlDatabase 类完全错误吗?
编辑:应@musicmante在下面评论中的要求,我添加了这些行:
print(db.lastError().databaseText())
print(db.lastError().driverText())
对于两者,输出都是“驱动程序未加载。我继续添加:
print(QSqlDatabase.drivers())
这给了我一个空列表。
最终找到了问题的根源。我之前在
conda
环境中从事项目工作。我切换到 virtualenv 环境,这次用 PyQt5
重新安装了 pip
,一切正常。 QSqlDatabase
conda
安装中似乎不包含 PyQt5
驱动程序。但是,通过pip
安装时它可以正常工作。
我也遇到了类似的问题。我使用的是PySide6.8.02。有趣的是我用了三个print语句,最后只得到了[]。
print(QSqlDatabase.drivers()) # []
db_name = "student_score_new.db"
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName(db_name)
print(db.lastError().databaseText(), '111') # no print
print(db.lastError().driverText(), '222') # no print
然后我在pyside2中测试了一下,成功了! “['QSQLITE'、'QODBC'、'QODBC3'、'QPSQL'、'QPSQL7']”。 于是,我决定将版本改为pyside6.5。结果还好啦