pyside6 sql
时间: 2025-05-19 18:26:06 浏览: 15
### 如何在 PySide6 中集成 SQL 数据库
PySide6 提供了强大的支持来与各种数据库进行交互,主要通过 `QtSql` 模块完成。该模块允许开发者轻松连接、查询和操作关系型数据库,例如 SQLite、MySQL 或 PostgreSQL。
#### 使用 QtSql 进行数据库连接
要使用 `QtSql` 模块中的功能,首先需要导入必要的类并建立数据库连接。以下是基本流程:
1. **创建数据库对象**
创建一个 `QSqlDatabase` 对象实例化所需的数据库驱动程序。
2. **设置数据库参数**
设置主机名、用户名、密码以及数据库名称等必要参数。
3. **打开数据库连接**
调用 `.open()` 方法启动数据库会话。
```python
from PyQt6.QtSql import QSqlDatabase
db = QSqlDatabase.addDatabase("QSQLITE") # 使用 SQLite 驱动
db.setDatabaseName("example.db") # 设定数据库文件路径
if not db.open():
raise Exception(f"Failed to open the database: {db.lastError().text()}")
```
以上代码展示了如何配置一个 SQLite 数据库[^1]。如果目标是其他类型的数据库(如 MySQL),则需更改驱动名称为 `"QMYSQL"` 并提供额外的服务器地址和其他认证信息。
#### 查询数据表
一旦建立了有效的数据库链接,可以利用 `QSqlQuery` 类执行标准 SQL 命令,比如 SELECT、INSERT 和 UPDATE 等操作。
```python
from PyQt6.QtSql import QSqlQuery
query = QSqlQuery()
success = query.exec("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
if success:
print("Table created successfully.")
else:
print(f"Error creating table: {query.lastError().text()}")
insert_query = QSqlQuery()
result = insert_query.prepare("INSERT INTO users (name) VALUES (:name)")
insert_query.bindValue(":name", "John Doe")
if result and insert_query.exec():
print("Data inserted into 'users' table.")
else:
print(f"Insert failed: {insert_query.lastError().text()}")
```
此脚本片段演示了怎样定义新表格结构以及向其中添加记录的过程[^1]。
#### 显示查询结果于 GUI 控件内
为了使最终用户能够直观查看存储的数据内容,通常还需要把检索出来的资料展示出来。借助模型/视图架构(Model/View Architecture),我们可以很方便地达成这一目的。
下面的例子说明了如何将来自数据库的结果绑定至 QTableView 小部件显示给使用者看:
```python
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTableView
from PyQt6.QtSql import QSqlTableModel
app = QApplication([])
model = QSqlTableModel()
model.setTable('users')
model.select()
view = QTableView()
view.setModel(model)
window = QMainWindow()
central_widget = QWidget(window)
layout = QVBoxLayout(central_widget)
layout.addWidget(view)
window.setCentralWidget(central_widget)
window.show()
app.exec()
```
这里我们采用了 `QSqlTableModel` 来简化对整个表的操作,并将其关联到 `QTableView` 上以便呈现给前端界面[^1]。
---
###
阅读全文
相关推荐


















