1

QtSql.QSqlTableModel.setTable(tableName)前後のテーブルのレコード数を取得することは可能QtSql.QSqlTableModel.select()ですか?setTable関数に関するQtドキュメントには次のように書かれています。

モデルが動作するデータベーステーブルをtableNameに設定します。テーブルからデータを選択しませんが、そのフィールド情報をフェッチします。

だからこれらは私の質問です:)どのフィールド情報ですか?レコード数が含まれていますか?必要に応じてアクセスするには?(テーブルの読み込み中にプログレスバーを表示したい)

4

1 に答える 1

2

呼び出した後、次のコマンドを発行することにより、オブジェクトをsetTable介してテーブルのフィールド数、フィールド名、およびレコード数を取得できます。QSqlQuerySQL

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の質問を参照してください)。

于 2012-10-09T11:16:28.547 に答える