一、PyQt5:数据库操作简介
# 导入QtSql
from PyQt5 import QtSql
QtSQL模块中包含了很多个类,这些类归总起来主要包含三大部分:
- 驱动层,用于提供特定数据库与SQL API接口之间的低级连接功能;其中包括QSqlDriver、QSqlDriverCreatorBase、QSqlResult;
- SQL API层,用于提供对数据库的访问。通常来说,我们会使用QSqlDatabase建立数据库连接,使用QSqlQuery等类实现数据库的交互(执行SQL语句)。此外还有QSqlError、QSqlField、QSqlIndex、QSqlRecord等类。
- 用户界面操作层,用于将数据库操作的数据链接到PyQt相应的数据小部件,将数据和操作展示在Qt界面中。这些类包括:QSqlQueryModel、QSqlTableModel等。
在这些类中,每个类都有自己特定的用途,其中:
- QSQL:包含整个Qt SQL模块中使用的各种标识符
- QSqlDatabase:处理与数据库的连接
- QSqlDriver:用于访问特定SQL数据库的抽象基类
- QSqlDriverCreator:模板类,为特定驱动程序类型提供SQL驱动程序工厂
- QSqlDriverCreatorBase:SQL驱动程序工厂的基类
- QSqlError:SQL数据库错误信息
- QSqlField:处理SQL数据库表和视图中的字段
- QSqlIndex:用于操作和描述数据库索引的函数
- QSqlQuery:执行和操作SQL语句的方法
- QSqlQueryModel:SQL结果集的只读数据模型
- QSqlRecord:封装数据库记录
- QSqlRelationalTableModel:具有外键支持的单个数据库表的可编辑数据模型
- QSqlResult:用于从特定SQL数据库访问数据的抽象接口
- QSqlTableModel:单个数据库表的可编辑数据模型
在实际的PyQt编程中,我们很少使用驱动层的类,多通过API层的来建立数据库连接、进行数据库查询等,然后通过用户界面操作层的类将数据结果显示在图形界面中。下面我们就来简单使用一下。
二、创建PyQt5中包含的数据库驱动程序
2.1、创建UI界面
# coding:utf-8
from PyQt5 import QtGui,QtCore,QtWidgets,QtSql
import sys
'''
在PyQt5中使用数据库
'''
class MainUi(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.initUi()
# 初始化UI界面
def initUi(self):
# 设置窗口标题
self.setWindowTitle("在PyQt5中使用数据库")
# 设置窗口大小
self.resize(600,400)
# 创建一个窗口部件
self.widget = QtWidgets.QWidget()
# 创建一个网格布局
self.grid_layout = QtWidgets.QGridLayout()
# 设置窗口部件的布局为网格布局
self.widget.setLayout(self.grid_layout)
# 创建一个按钮组
self.group_box = QtWidgets.QGroupBox('数据库按钮')
self.group_box_layout = QtWidgets.QVBoxLayout()
self.group_box.setLayout(self.group_box_layout)
# 创建一个表格部件
self.table_widget = QtWidgets.QTableView()
# 将上述两个部件添加到网格布局中
self.grid_layout.addWidget(self.group_box,0,0)
self.grid_layout.addWidget(self.table_widget,0,1)
# 创建按钮组的按钮
self.b_create_db = QtWidgets.QPushButton("创建数据库")
self.b_create_db.clicked.connect(self.create_db)