PyQt5 - 数据库处理
-
简述
PyQt5 库包含QtSql模块。它是一个复杂的类系统,可以与许多基于 SQL 的数据库进行通信。它的QSqlDatabase通过 Connection 对象提供访问。以下是当前可用的 SQL 驱动程序列表 -序号 驱动程序类型和描述 1 QDB2IBM DB22 QIBASEBorland InterBase 驱动程序3 QMYSQLMySQL 驱动程序4 QOCIOracle 调用接口驱动程序5 QODBCODBC 驱动程序(包括 Microsoft SQL Server)6 QPSQLPostgreSQL 驱动程序7 QSQLITESQLite 版本 3 或更高版本8 QSQLITE2SQLite 版本 2 -
例子
对于本章,使用静态方法建立与 SQLite 数据库的连接 -QSqlDatabase 类的其他方法如下:序号 方法和描述 1 setDatabaseName()设置寻求连接的数据库的名称2 setHostName()设置安装数据库的主机名3 setUserName()指定连接的用户名4 setPassword()设置连接对象的密码(如果有)5 commit()提交事务,如果成功则返回 true6 rollback()回滚数据库事务7 close()关闭连接QSqlQuery类具有执行和操作 SQL 命令的功能。可以执行 DDL 和 DML 类型的 SQL 查询。第一步是使用以下语句创建 SQlite 数据库 -接下来,获取 Query 对象QSqlQuery()方法并调用其最重要的方法 exec_(),该方法将包含要执行的 SQL 语句的字符串作为参数。以下脚本创建一个 SQLite 数据库 sports.db,其中包含一个填充了五条记录的运动员表。要确认 SQLite 数据库是使用添加到其中的 sportsmen 表中的上述记录创建的,请使用名为的 SQLite Gui 实用程序SQLiteStudio.QSqlTableModelPyQt 中的 class 是一个高级接口,它提供了可编辑的数据模型,用于在单个表中读取和写入记录。该模型用于填充QTableView目的。它向用户呈现一个可滚动和可编辑的视图,可以放在任何顶级窗口上。QSqlTableModel 对象以下列方式声明 -它的编辑策略可以设置为以下任何一种 -QSqlTableModel.OnFieldChange 所有更改将立即应用 QSqlTableModel.OnRowChange 当用户选择不同的行时将应用更改 QSqlTableModel.OnManualSubmit 在调用 submitAll() 或 revertAll() 之前,所有更改都将被缓存 -
例子
在以下示例中,运动员表用作模型,策略设置为 -QTableView 类是 PyQt 中模型/视图框架的一部分。QTableView 对象的创建如下 -这个 QTableView 对象和两个 QPushButton 小部件被添加到顶级 QDialog 窗口。添加按钮的 Clicked() 信号连接到 addrow(),它在模型表上执行 insertRow()。与删除按钮关联的 Slot 执行一个 lambda 函数,该函数删除由用户选择的行。完整的代码如下 -上面的代码产生以下输出 -尝试添加和删除一些记录,然后返回 SQLiteStudio 以确认交易。