2012-10-09 1 views
1

QtSql.QSqlTableModel.setTable(tableName) 이후와 QtSql.QSqlTableModel.select() 전에 테이블의 레코드 수를 구할 수 있습니까? Qt는 설명서에 대한 설정 가능 기능은 말합니다 :PyQt4 : qtsql 테이블을로드하는 동안 진행률 표시 줄을 표시합니다.

모델이 TABLENAME로 작동하는 데이터베이스 테이블을 설정합니다. 테이블에서 데이터를 선택하지 않지만 해당 필드 정보를 반입합니다.

그래서 내 질문은 다음과 같습니다. :) 어떤 필드 정보입니까? 레코드 수를 포함합니까? 필요한 경우 액세스하는 방법? 당신이, SQL 명령을 실행하여 필드, 필드 이름의 수와 QSqlQuery 객체를 통해 테이블의 레코드 수를 얻을 수 있습니다

답변

2

setTable을 호출 한 후 (테이블이로드되는 동안 진행률 표시 줄을 표시 할 것) 인스턴스 :

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 

필드 "the_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 참조) 신화가 될 것으로 보인다.

+0

@ Vincent thanks! 그래도 행 수를 계산하는 데 얼마나 걸릴지 아십니까? 테이블을 채우는 것만큼이나 비효율적 일 수 있습니다 ... –

+0

아니요,이 계산을 수행하는 방법을 모르겠습니다. – Vicent