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