PySide6.QtSql.QSqlQueryModel¶
- class QSqlQueryModel¶
QSqlQueryModel
类为 SQL 结果集提供了一个只读的数据模型。更多…继承者:
QSqlTableModel
,QSqlRelationalTableModel
概要¶
方法¶
def
__init__()
def
endInsertRows()
def
endRemoveRows()
def
endResetModel()
def
lastError()
def
query()
def
record()
def
setLastError()
def
setQuery()
虚拟方法¶
def
clear()
def
indexInQuery()
def
queryChange()
注意
本文档可能包含从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()
。另请参阅
使用给定的
parent
创建一个空的QSqlQueryModel
。- beginInsertColumns(parent, first, last)¶
- Parameters:
parent –
QModelIndex
first – int
last – int
- beginInsertRows(parent, first, last)¶
- Parameters:
parent –
QModelIndex
first – int
last – int
- beginRemoveColumns(parent, first, last)¶
- Parameters:
parent –
QModelIndex
first – int
last – int
- beginRemoveRows(parent, first, last)¶
- Parameters:
parent –
QModelIndex
first – int
last – int
- beginResetModel()¶
- clear()¶
清除模型并释放任何已获取的资源。
- endInsertColumns()¶
- endInsertRows()¶
- endRemoveColumns()¶
- endRemoveRows()¶
- endResetModel()¶
- indexInQuery(item)¶
- Parameters:
项目 –
QModelIndex
- Return type:
返回模型中给定
item
在数据库结果集中的值的索引。如果没有插入、删除或移动任何列或行,则返回值与
item
相同。如果
item
超出范围或item
未指向结果集中的值,则返回无效的模型索引。另请参阅
indexInQuery()
insertColumns()
removeColumns()
返回有关数据库上发生的最后一个错误的信息。
另请参阅
返回与此模型关联的常量
QSqlQuery
对象的引用。另请参阅
- queryChange()¶
每当查询发生变化时,都会调用此虚拟函数。默认实现不执行任何操作。
query()
返回新的查询。另请参阅
- record()¶
- Return type:
这是一个重载函数。
返回一个包含当前查询字段信息的空记录。
如果模型未初始化,将返回一个空记录。
另请参阅
- record(row)
- Parameters:
行 – 整数
- Return type:
返回包含当前查询字段信息的记录。如果
row
是有效行的索引,则该记录将使用该行的值填充。如果模型未初始化,将返回一个空记录。
另请参阅
受保护的函数,允许派生类将数据库上发生的最后一个错误的值设置为
error
。另请参阅
请使用
setQuery(QSqlQuery &&query)
的重载函数代替。这是一个重载函数。
- setQuery(query[, db=QSqlDatabase()])
- Parameters:
query – str
db –
QSqlDatabase
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
这是一个重载函数。
为给定的数据库连接
db
执行查询query
。如果未指定数据库(或指定了无效的数据库),则使用默认连接。lastError()
可用于检索设置查询时发生错误的详细信息。示例:
model = QSqlQueryModel() model.setQuery("select * from MyTable") if model.lastError().isValid(): print(model.lastError())