PyQt4:正在加载qtsql表时显示进度条

时间:2012-10-09 04:47:37

标签: python qt pyqt pyqt4 qtsql

是否可以在QtSql.QSqlTableModel.setTable(tableName)之后和QtSql.QSqlTableModel.select()之前获取表格中的记录数量? 有关 setTable 功能的Qt文档说:

  

将模型运行的数据库表设置为tableName。不从表中选择数据,而是获取其字段信息。

所以这些是我的问题:)哪些字段信息?它是否包含记录数量?如有必要,如何访问它? (我想在加载表时显示进度条)

1 个答案:

答案 0 :(得分:2)

调用setTable后,您可以通过QSqlQuery命令通过SQL对象获取字段数,字段名称和表记录数,例如:

model = QSqlTableModel(db=your_db)
model.setTable("your_table")
...
query = QSqlQuery("SELECT column_name FROM information_schema.columns WHERE table_name='your_table'")
query.next()
print query.numRowsAffected() # print the number of fields
query.previous()
while query.next():
    print query.value(0).toString()  # print the field name

将打印表“your_table”和字段名称的字段数。

要获取行数而不填充模型,可以使用COUNT命令,如下所示:

query = QSqlQuery("SELECT COUNT(*) FROM your_table")
query.next()
print query.value(0).toString()  # print the number of records
print model.rowCount()  # print 0 as the model has not been populated yet

我认为COUNT(1)的效果优于COUNT(*),但它似乎是一个神话(见this SO question)。