PyQt数据库与高级模型/视图编程
1. PyQt数据库支持概述
PyQt通过QtSql模块为SQL数据库提供了强大且一致的API支持。对于常见的数据库,都有相应的数据库驱动可供使用,但由于许可限制,部分驱动仅在Qt商业版中可用。
在数据库连接方面,如果只建立一个数据库连接,后续的数据库访问默认都会使用该连接。若需要多个连接,只需为每个连接命名,之后就可以通过名称指定使用哪个连接进行特定操作。
我们还能访问数据库的驱动,从而了解数据库是否支持诸如BLOBs和事务等特定功能。而且,无论底层数据库是什么,PyQt都允许我们使用ODBC和Oracle语法的预准备查询,并自动处理必要的转换和引号。它支持所有标准的SQL数据类型,若数据库本身不支持,还会进行必要的转换。
2. SQL表模型与信号
SQL表模型使用起来非常方便,能与QTableViews完美配合。同时,我们可以创建自定义委托,对字段的外观和编辑进行完全控制,必要时还能使用委托进行记录级别的验证。
在处理新记录的唯一键创建问题时,我们可以在表中使用自增ID字段来解决。但有时自增并不适用,比如当键比简单整数更复杂时。这时可以连接到QSqlTableModel.beforeInsert()信号,该信号会在用户完成编辑后,在数据实际插入数据库之前,提供即将插入的记录的引用,我们可以在此时填充或更改任何字段。
此外,还有一些特定于SQL的信号,如beforeDelete()和beforeUpdate(),若要在单独的表中记录删除或更改操作,这些信号会很有用。另外,primeInsert()信号会在创建新记录但用户尚未有机会编辑时发出,我们可以在此为记录
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



