QSqlQueryModel
是 PySide6 中一个用于执行 SQL 查询并处理查询结果的模型类。它可以方便地将查询结果展示在视图组件中,如 QTableView
或 QListView
。以下是 QSqlQueryModel
的一些常用方法:
1. setQuery(query, db=None)
- 参数 :
query
: SQL 查询字符串或 QSqlQuery 对象。db
: 可选的 QSqlDatabase 对象,用于指定数据库连接。如果不提供,默认使用默认数据库连接。
- 功能 : 执行 SQL 查询并更新模型。如果查询失败,可以调用
lastError()
方法获取错误信息。
2. lastError()
- 返回值: QSqlError 对象。
- 功能 : 返回最后一次调用
setQuery
时发生的错误信息。
3. columnCount(parent=QModelIndex())
- 参数 :
parent
: 父模型索引,通常传递QModelIndex()
。
- 返回值: 列数。
- 功能: 返回模型的列数。
4. rowCount(parent=QModelIndex())
- 参数 :
parent
: 父模型索引,通常传递QModelIndex()
。
- 返回值: 行数。
- 功能: 返回模型的行数。
5. data(index, role=Qt.DisplayRole)
- 参数 :
index
: 模型索引。role
: 角色,通常用于指定数据的用途(如Qt.DisplayRole
用于显示)。
- 返回值: 查询结果中对应索引的数据。
- 功能: 返回模型中指定索引的数据。
6. headerData(section, orientation, role=Qt.DisplayRole)
- 参数 :
section
: 列或行的索引。orientation
: 方向,可以是Qt.Horizontal
或Qt.Vertical
。role
: 角色,通常用于指定数据的用途(如Qt.DisplayRole
用于显示)。
- 返回值: 标题数据。
- 功能: 返回模型中指定位置的标题数据。
7. record(row)
- 参数 :
row
: 行索引。
- 返回值: QSqlRecord 对象。
- 功能: 返回指定行的记录。
8. query()
- 返回值: QSqlQuery 对象。
- 功能: 返回当前查询对象。
9. clear()
- 功能: 清除模型中的所有数据。
10. lastQuery()
- 返回值: 字符串。
- 功能: 返回最后一次执行的 SQL 查询字符串。
示例代码
以下的示例,展示如何使用 QSqlQueryModel
执行查询并将结果展示在 QTableView
中:
python
import sys
from PySide6.QtWidgets import QApplication, QTableView
from PySide6.QtSql import QSqlQueryModel, QSqlDatabase
def create_connection():
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('example.db')
if not db.open():
print("Unable to open database")
return False
return True
def main():
if not create_connection():
return
app = QApplication(sys.argv)
model = QSqlQueryModel()
model.setQuery("SELECT * FROM users")
view = QTableView()
view.setModel(model)
view.show()
sys.exit(app.exec())
if __name__ == '__main__':
main()
在这个示例中,我们首先创建一个数据库连接,然后使用 QSqlQueryModel
执行 SQL 查询,并将结果显示在 QTableView
中。