1

是否可以在QtSql.QSqlTableModel.setTable(tableName)前后获取表中的记录数QtSql.QSqlTableModel.select()关于setTable函数的 Qt 文档说:

将模型操作的数据库表设置为 tableName。不从表中选择数据,但获取其字段信息。

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

4

1 回答 1

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(*)但这似乎是一个神话(参见这个 SO question)。

于 2012-10-09T11:16:28.547 回答