数据库与高级模型/视图编程
1. 数据库操作基础
在数据库操作方面,SQL 表模型使用起来非常方便,能与 QTableViews 完美配合。我们还可以创建自定义委托,来完全控制字段的外观和编辑,必要时使用委托进行记录级别的验证。
对于新记录唯一键的创建问题,通常使用表中的自增 ID 字段来解决。但在某些情况下,自增并不适用,比如键比简单整数更复杂时。此时可以连接 QSqlTableModel.beforeInsert() 信号,该信号会在用户完成编辑后,插入数据之前,提供即将插入记录的引用,这样就能在数据实际插入数据库之前填充或更改任何想要的字段。
此外,还有一些特定于 SQL 的信号,如 beforeDelete()、beforeUpdate() 和 primeInsert()。这些信号在需要在单独的表中记录删除或更改操作时可能会很有用,primeInsert() 信号会在创建新记录但用户尚未编辑时发出,可用于填充有用的默认值。由于 QSqlRelationalTableModel 是 QSqlTableModel 的子类,它也拥有这些信号。
2. PyQt 对 SQL 数据库的支持
PyQt 通过 QtSql 模块提供了一致的 API,为 SQL 数据库提供了强大的支持。它为大多数广泛使用的数据库提供了驱动程序,但由于许可限制,有些驱动程序仅在 Qt 的商业版中可用。
如果只建立一个数据库连接,后续的数据库访问默认会使用该连接。若需要多个连接,只需为每个连接命名,之后通过名称访问以指定要用于特定操作的连接。
可以访问数据库的驱动程序,从而发现数据库是否支持某些功能,如 BLOBs 和事务。无论
超级会员免费看
订阅专栏 解锁全文
3万+

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



