2014-01-20 3 views
1

나는 tableWidget에서 데이터베이스의 데이터를 표시해야하는 응용 프로그램을 만들었으며 테이블에 성공적으로 표시했습니다. 문제는 QTableWidget의 선택된 행에서 ID 값을 가져 오는 방법을 얻지 못하기 때문에 SQL 데이터베이스에서 해당 행을 삭제하기 위해서입니다. 제발 도와주세요. 이것은 내가 시도하는 방법이다 : 나는 테이블의 행의 현재 ID를 얻는 방법을 받고 있지 않다sqlite 데이터베이스에서 표시되는 qtableWidget에서 행 삭제

def removebutton_Clicked(self): 
db_id = self.get_currentId() 
self.queryCurs.execute("DELETE FROM PATIENT WHERE ID = %d" % (db_id)) 
self.createDb.commit() 

def get_currentId(self): 
if self.patientTable.currentIndex(): 
    index = self.patientTable.currentIndex().row() 
    print index 
    db_id = self.patientTable.index.value("ID") 
    return db_id 

..... 있도록 내가 모든 붙어

답변

0

먼저 생각 좀 도와주세요 그 db_id을 반환 유효한 값입니다.

cur.execute("SELECT * FROM Elements WHERE Name LIKE ? OR Type LIKE ? OR Id LIKE ?", [searchWord, searchWord, searchWord]) 

: 환자 ID (이다) LIKE 나는 내 코드에서 하나 개 이상의 조건을 가지고 예를 들어

을 DB_ID (테이블) * FROM (전체 행)를 삭제합니다

self.queryCurs.execute("DELETE * FROM PATIENT WHERE ID LIKE ?",[db_id]) 

EDIT self.patientTable에서 모델을 사용하지 않으므로 필요한 "ID"가있는 테이블의 열 (숨길 수 있음)을 채워야합니다. 그 방법이처럼 수행 할 수 있습니다 col 당신이 ID 값을 저장하는 열의 열 번호가

db_id = (self.patientTable.item(self.patientTable.currentIndex().row(), col).text()).toUtf8() 

+0

K 만의 ID를 얻는 방법 그 특정 행은 내 질문에 대한 모든 것입니다 –

+0

그래서 당신은 반환 db_id가 올바른 값을 반환하지 않는다고 말하는거야? 이 경우 값을 채우는 'self.patientTable' 컬럼을 알려주십시오 – Aleksandar

0

당신은 GUI의 행 번호가의 ID에 해당하는 것으로 가정합니다 데이터 베이스? 그러지 마. 데이터베이스 행 ID는 행이 데이터베이스 테이블에 남아있는 동안 동일하게 유지해야하지만 GUI 테이블 표시는 훨씬 일시적입니다. 몇 가지 삽입 및 삭제 후에 데이터베이스 테이블 ID가 연속적이지 않고 0 또는 1로 시작하지 않을 수 있습니다.

GUI 데이터 모델은 표시된 데이터의 각 행을 기억해야합니다 DB 테이블 행의 ID (사용자가 디버깅을 할 때를 제외하고)를 표시하지 않더라도 - 행을 삭제할 때 모델에 ID를 알려주도록 요청한 다음 해당 ID로 삭제하십시오. 코드는 GUI 모델을 올바르게 사용하는 한 평범한 것입니다 ().

(이것은 또한 당신이 선택하는 경우, 쉽게 열을 기준으로 정렬 구현할 수 것이다. 신분 질서와 인덱스를 분리, 당신이 물건 당신이 원하는 방식으로 셔플 수)

+0

또한 SQL에 값을 대체하지 마십시오. 매개 변수화 된 쿼리를 사용하십시오. 그것은 더 빠릅니다 - DB에 의해 더 잘 캐싱 될 수 있습니다 - 더 안전하게 그리고 그렇게 간단합니다. –

+0

사실 내가 여기 모델을 사용하고 있지 않습니다. qtablewidget을 직접 사용하고 있습니다. qtablewidget 내부에 –

+0

이 있습니다. sqlite 데이터베이스에서 테이블을 표시하고 있습니다. 그렇기 때문에 모델에 따라 id를 얻을 수 있습니다. qtablewidget –

관련 문제