class QSqlQueryModel#

QSqlQueryModel 类为 SQL 结果集提供只读数据模型。更多信息

Inheritance diagram of PySide6.QtSql.QSqlQueryModel

继承自: QSqlTableModel, QSqlRelationalTableModel

简介#

方法#

虚拟方法#

说明

此文档可能包含自动从C++转换为Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译存在问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建票据来告知我们

详细描述#

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

QSqlQueryModel是执行SQL语句和遍历结果集的高级接口。它基于底层QSqlQuery构建,可以用于向QTableView等视图类提供数据。例如

model = QSqlQueryModel()
model.setQuery("SELECT name, salary FROM employee")
model.setHeaderData(0, Qt.Horizontal, tr("Name"))
model.setHeaderData(1, Qt.Horizontal, tr("Salary"))
view = QTableView()
view.setModel(model)
view.show()

我们设置了模型的查询,然后设置了视图标题中显示的标签。

QSqlQueryModel 也可以用于以编程方式访问数据库,而无需将其绑定到视图中

model = QSqlQueryModel()
model.setQuery("SELECT name, salary FROM employee")
salary = model.record(4).value("salary").toInt()

上面的代码片段从 SELECT 查询的结果集中提取第 4 条记录的 salary 字段。由于 salary 是第 2 列(或列索引 1),因此可以将最后一行重写如下

salary = model.data(model.index(4, 1)).toInt()

默认情况下,该模型是只读的。为了使其可读写,必须对其进行子类化并重新实现 setData() 和 flags()。另一种选择是使用 QSqlTableModel,它提供基于单个数据库表的读写模型。

查询模型示例 说明了如何使用 QSqlQueryModel 显示查询结果。它还展示了如何子类化 QSqlQueryModel 以自定义显示给用户的数据内容,以及如何根据 QSqlQueryModel 创建读写模型。

如果数据库在查询中不返回选定行的数量,则模型将按增量方式获取行。有关更多信息,请参阅 fetchMore()

__init__([parent=None])#
参数::

parentQObject

创建一个空的 QSqlQueryModel,具有指定的 parent

beginInsertColumns(parent, first, last)#
参数::
beginInsertRows(parent, first, last)#
参数::
beginRemoveColumns(parent, first, last)#
参数::
beginRemoveRows(parent, first, last)#
参数::
beginResetModel()#
clear()#

清除模型并释放所获取的资源。

endInsertColumns()#
endInsertRows()#
endRemoveColumns()#
endRemoveRows()#
endResetModel()#
indexInQuery(item)#
参数::

itemQModelIndex

返回类型:

QModelIndex

返回数据库结果集中给定模型的 item 的索引。

如果没有插入、删除或移动列或行,则返回值与 item 相同。

如果 item 超出范围或指向的不是结果集中的值,则返回无效的模型索引。

另请参阅

indexInQuery() insertColumns() removeColumns()

lastError()#
返回类型:

QSqlError

返回关于数据库上最后一个错误的信息。

另请参阅

setLastError() query()

query()#
返回类型:

QSqlQuery

queryChange()#

此虚函数在查询发生变化时被调用。默认实现不执行任何操作。

query() 返回新的查询。

另请参阅

query()setQuery()

record()#
返回类型:

QSqlRecord

这是一个重载函数。

返回一个空记录,包含当前查询的列信息。

如果模型未初始化,则返回一个空记录。

另请参阅

isEmpty()

record(row)
参数::

– int

返回类型:

QSqlRecord

返回包含当前查询列信息的记录。如果 row 是有效行的索引,则记录将被该行的值填充。

如果模型未初始化,则返回一个空记录。

另请参阅

isEmpty()

setLastError(error)#
参数::

错误QSqlError

受保护的函数,允许派生类将数据库上发生的最后一个错误设置为 error

另请参阅

lastError()

setQuery(query)#
参数::

查询QSqlQuery

请使用重载 setQuery(QSqlQuery &&query)

这是一个重载函数。

setQuery(query[, db=QSqlDatabase()])
参数::

警告

本节包含自动从C++转换为Python的代码片段,可能包含错误。

这是一个重载函数。

对于给定的数据库连接 db 执行查询 query。如果没有指定数据库(或指定了一个无效的数据库),则使用默认连接。

lastError() 可以用来获取设置查询时可能发生的错误的详细信息。

示例

model = QSqlQueryModel()
model.setQuery("select * from MyTable")
if model.lastError().isValid():
    print(model.lastError())