📜  PyQt-数据库处理(1)

📅  最后修改于: 2023-12-03 14:45:45.429000             🧑  作者: Mango

PyQt 数据库处理

PyQt 是一个流行的 Python GUI 库,它提供了处理数据库的工具和技术。本篇文章将介绍 PyQt 中的数据库处理及其相关工具和技术。

PyQt 中的数据库支持

PyQt 支持多种数据库,包括 PostgreSQL、MySQL、Oracle、SQLite 等。为了使用数据库,我们需要创建一个数据库连接,并使用 QSqlDatabase 、QSqlQuery 和 QSqlTableModel 等类来操作数据库。

# 导入必要的模块
from PyQt5.QtCore import Qt
from PyQt5.QtSql import QSqlDatabase, QSqlQuery

# 创建数据库连接
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('employees.db')
if not db.open():
    print('无法连接数据库')

# 创建查询对象
query = QSqlQuery()
query.exec_('SELECT * FROM employees')
while query.next():
    name = query.value(0)
    age = query.value(1)
    print(name, age)

在上面的代码中,我们使用 SQLite 数据库,并从名为 employees 的表中检索数据。使用 QSqlQuery 对象执行 SQL 查询语句,并使用 QSqlQuery.value() 方法获取数据。

PyQt 中的模型-视图编程

PyQt 提供了模型-视图编程框架,使我们能够更轻松地操作和显示数据库中的数据。QSqlTableModel 类是一个模型类,用于在表格视图中显示和编辑数据库表的数据。以下代码显示了如何使用 QSqlTableModel 显示 SQLite 数据库中的数据:

from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel

app = QApplication([])

# 创建数据库连接
db = QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('employees.db')
if not db.open():
    print('无法连接数据库')

# 创建模型对象
model = QSqlTableModel()
model.setTable('employees')
model.select()

# 创建表格视图
view = QTableView()
view.setModel(model)
view.show()

app.exec_()

在上面的代码中,我们创建了一个 QSqlTableModel 对象,并将其设置为名为 employees 的表。然后,我们使用 QSqlTableModel.select() 方法从数据库中检索数据,并将其显示在表格视图中。

PyQt 中的图形用户界面设计工具

PyQt 还提供了 Qt Designer 工具,使我们能够使用可视化界面设计器为我们的应用程序创建 GUI 界面。我们可以将设计器生成的 GUI 界面与我们的 Python 代码集成。以下代码演示了如何使用 Qt Designer 为我们的应用程序创建 GUI 界面:

from PyQt5.uic import loadUiType
from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView
from PyQt5.QtSql import QSqlDatabase, QSqlTableModel

# 加载 UI 文件
Ui_MainWindow, QMainWindow = loadUiType('mainwindow.ui')

class MainWindow(QMainWindow, Ui_MainWindow):
    def __init__(self):
        super().__init__()
        self.setupUi(self)

        # 创建数据库连接
        db = QSqlDatabase.addDatabase('QSQLITE')
        db.setDatabaseName('employees.db')
        if not db.open():
            print('无法连接数据库')

        # 创建模型对象
        self.model = QSqlTableModel()
        self.model.setTable('employees')
        self.model.select()

        # 设置表格视图
        self.tableView = QTableView()
        self.tableView.setModel(self.model)
        self.tableView.setEditTriggers(QTableView.NoEditTriggers)
        self.tableView.setSelectionBehavior(QTableView.SelectRows)

        # 将表格视图添加到窗口
        self.verticalLayout.addWidget(self.tableView)

app = QApplication([])
window = MainWindow()
window.show()
app.exec_()

在上面的代码中,我们首先使用 Qt Designer 创建了一个 GUI 界面,然后使用 loadUiType() 方法将其加载到程序中。接下来,我们创建了一个名为 MainWindow 的类,并在构造函数中设置了 GUI 界面。在设置过程中,我们创建了一个表格视图,并将其添加到垂直布局中。

结论

PyQt 是一个强大的 Python GUI 库,它提供了处理数据库的工具和技术。在此介绍了 PyQt 中的数据库支持、模型-视图编程和图形用户界面设计工具,希望本篇文章对你有所帮助。