PyQt6连接MySQL时QSqlField无法获取默认值的问题咨询
PyQt6中QSqlRelationalTableModel无法获取MySQL字段默认值的问题
问题场景
使用PyQt6连接MySQL数据库,通过QSqlRelationalTableModel和QDataWidgetMapper实现记录与控件的映射。插入新记录并定位到该记录后,控件未显示数据库中设置的字段默认值。调用model.record().field(0).defaultValue()时,所有字段均返回None,疑问在于:模型是否应该自动从数据库获取默认值,还是必须通过QSqlField.setDefaultValue()手动设置?
后续测试与确认
- 尝试手动调用
model.record().field(i).setDefaultValue("someValue")设置默认值,但打印model.record().field(i).defaultValue()仍返回None;使用db.record(tableName)测试同样得到None结果。 - 经GitHub用户thecodemonkey86确认,该问题从Qt4版本起即为已知bug。
- 已提交对应bug报告(编号QTBUG-122723)
结论
当前Qt(含PyQt6)的QSql系列模型存在已知缺陷,无法自动读取MySQL的字段默认值,且手动设置默认值的方式也无法生效。暂时只能通过其他方式规避,比如在插入新记录前手动为控件赋值预设的默认值,或者插入记录后重新执行查询以刷新模型数据。
内容的提问来源于stack exchange,提问作者embabi
相关产品推荐
相关产品推荐

