PySide6.QtSql.QSqlQueryModel

class QSqlQueryModel

QSqlQueryModel 类为 SQL 结果集提供了一个只读的数据模型。更多

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,它提供了一个基于单个数据库表的可读写模型。

querymodel 示例展示了如何使用 QSqlQueryModel 来显示查询结果。它还展示了如何子类化 QSqlQueryModel 以在向用户显示之前自定义数据内容,以及如何基于 QSqlQueryModel 创建一个读写模型。

如果数据库在查询中没有返回所选行的数量,模型将逐步获取行。有关更多信息,请参见fetchMore()

另请参阅

QSqlTableModel QSqlRelationalTableModel QSqlQuery 查询模型示例

__init__([parent=None])
Parameters:

父对象QObject

使用给定的parent创建一个空的QSqlQueryModel

beginInsertColumns(parent, first, last)
Parameters:
beginInsertRows(parent, first, last)
Parameters:
beginRemoveColumns(parent, first, last)
Parameters:
beginRemoveRows(parent, first, last)
Parameters:
beginResetModel()
clear()

清除模型并释放任何已获取的资源。

endInsertColumns()
endInsertRows()
endRemoveColumns()
endRemoveRows()
endResetModel()
indexInQuery(item)
Parameters:

项目QModelIndex

Return type:

QModelIndex

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

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

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

另请参阅

indexInQuery() insertColumns() removeColumns()

lastError()
Return type:

QSqlError

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

另请参阅

setLastError() query()

query()
Return type:

QSqlQuery

返回与此模型关联的常量QSqlQuery对象的引用。

另请参阅

setQuery()

queryChange()

每当查询发生变化时,都会调用此虚拟函数。默认实现不执行任何操作。

query() 返回新的查询。

另请参阅

query() setQuery()

record()
Return type:

QSqlRecord

这是一个重载函数。

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

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

另请参阅

isEmpty()

record(row)
Parameters:

– 整数

Return type:

QSqlRecord

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

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

另请参阅

isEmpty()

setLastError(error)
Parameters:

错误QSqlError

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

另请参阅

lastError()

setQuery(query)
Parameters:

查询QSqlQuery

请使用setQuery(QSqlQuery &&query)的重载函数代替。

这是一个重载函数。

setQuery(query[, db=QSqlDatabase()])
Parameters:

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

这是一个重载函数。

为给定的数据库连接 db 执行查询 query。如果未指定数据库(或指定了无效的数据库),则使用默认连接。

lastError() 可用于检索设置查询时发生错误的详细信息。

示例:

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