将现有的sqlite数据库连接到QSqlDatabase的实例

问题描述 投票:0回答:2

我在将现有数据库连接到 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())

这给了我一个空列表。

python pyqt pyqt5 qtsql qsqldatabase
2个回答
0
投票

最终找到了问题的根源。我之前在

conda
环境中从事项目工作。我切换到 virtualenv 环境,这次用
PyQt5
重新安装了
pip
,一切正常。
QSqlDatabase
conda
安装中似乎不包含
PyQt5
驱动程序。但是,通过
pip
安装时它可以正常工作。


0
投票

我也遇到了类似的问题。我使用的是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。结果还好啦

© www.soinside.com 2019 - 2024. All rights reserved.