我可以将现有的Python-sqlite连接与QSqlDatabase一起使用吗



该项目使用Python,将有一个sqlite3数据库。

我想使用Python的sqlite3模块打开sqlite3数据库。但我也想从PySide6.QtSql模块中获得功能。

PySide的文档展示了Postgres的一个例子。

con = PQconnectdb("host=server user=bart password=simpson dbname=springfield")
drv = QPSQLDriver(con)
db = QSqlDatabase.addDatabase(drv) # becomes the default() connection()
query = QSqlQuery()
query.exec("SELECT NAME, ID FROM STAFF")

我尝试使用QSQLiteDriver,但无法导入,并且在计算机上找不到所需的文件qsql_sqlite.cpp

文档中提到链接某些文件。是否可以在不从源代码编译PySide6的情况下使用QSQLiteDriver

这些驱动程序类仅在C++中可用。PySide或PyQt无法包装它们,因为驱动程序是作为插件实现的。也没有办法通过Python使用Qt类直接注册任何类型的扩展、适配器、聚合器等。它只能通过C++来完成。

Python的SQLite实现通常比Qt的灵活得多——它唯一不能提供的真正重要的东西是模型。为此,您有两种主要的可能性:使用QStandardItemModel并直接从查询结果中填充它;或者编写一个自定义模型(即基于QAbstractItemModel,带有fetchMore(,它应该会给您提供相当于QSqlQueryModel的东西(但显然不是基于QSqlQuery(。选择其中一个的主要原因是性能。QStandardItemModel适用于较小的结果集,但为每行创建QStandardItem的开销可能会在一万项左右(取决于列数、本地系统资源等(时开始变得明显。

其他底层QtSQL类可能不值得麻烦,因为Python在大多数情况下已经提供了类似的功能。如果您对Python的sqlite实现有合理的了解,那么应该可以使用简单的基本模型将其与Qt GUI轻松集成。

最新更新