是否可以获取表中QtSql.QSqlTableModel.setTable(tableName)
之后和QtSql.QSqlTableModel.select()
之前的记录数?
关于setTable函数的Qt文档说:
将模型在其上运行的数据库表设置为tableName。不从表中选择数据,而是获取其字段信息。
这些是我的问题:)哪些领域信息?它是否包含记录数?如有必要如何访问它? (我想在加载表格时显示进度条)
最佳答案
调用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)。