PyQt 에서 QtSql 을 사용 하여 MySql 데이터 베 이 스 를 연결 하 는 방법

3133 단어 PyQtQtSqlMySql
PyQt 에는 내 장 된 데이터베이스 연결 클래스 QtSql 이 있 습 니 다.
PyQt 를 사용 하여 MySql 에 연결 하여 데 이 터 를 보 여줄 때 모든 데이터베이스 작업 이 Qt 창 과 관련 이 있 고 복잡 한 데이터 작업 과 관련 이 없 음 을 명 확 히 하면 내 장 된 QtSql 클래스 를 사용 할 수 있 습 니 다.추가 데이터베이스 클래스 를 설치 하지 않 아 도 QtTableView 등 Qt 컨트롤 과 데이터 상호작용 을 더욱 편리 하 게 할 수 있 습 니 다.
초기 화

db = QtSql.QSqlDatabase.addDatabase('QMYSQL')
db.setHostName('localhost')
db.setDatabaseName('dev')
db.setUserName('root')
db.setPassword('123')
db.open()
QMYSQL 은 MySql 데이터 베 이 스 를 연결 하 는 것 을 대표 합 니 다.QtSql.QSqlDatabase.drivers()를 통 해 현재 버 전의 PyQt 가 지원 하 는 데이터베이스 형식 을 조회 할 수 있 습 니 다.
데이터베이스 연결 을 만 든 후 db 를 장기 적 으로 보유 하지 않 아 도 됩 니 다.연결 은 프로그램 이 닫 히 거나 removeDatabase()를 호출 할 때 까지 계속 존재 합 니 다.
조작 데이터베이스
기본 조회 명령 은 다음 과 같 습 니 다.

query = QSqlQuery()
isSuccess = query.exec("select count(*) from `user`;")
if not isSuccess:
  print(query.lastError().text())
if query.next():
  count = query.value(0)

검색 대상 만 들 기
QSqlQuery 대상 을 만 듭 니 다.추가 인자 가 필요 하지 않 습 니 다.위 에서 초기 화 할 때 연 결 된 데이터베이스 와 database 를 사용 합 니 다.
명령 을 집행 하 다
exec()방법 을 호출 하여 조회 명령 을 실행 합 니 다.매개 변 수 를 조회 문 으로 전달 합 니 다.이 방법 은 검색 이 성 공 했 는 지 여 부 를 표시 하 는 불 값 을 되 돌려 줍 니 다.실패 할 때 lastError().text()를 호출 하여 실패 원인 을 가 져 올 수 있 습 니 다.
조회 데이터 가 져 오기
QSqlQuery 는 next(),prev(),first(),last(),seek()등 을 제공 하여 되 돌아 오 는 기록 에서 내 비게 이 션 을 하여 쉽게 이동 할 수 있 습 니 다.그러나 주의해 야 할 것 은 exec()가 실행 이 끝 난 후에 1 개의 무효 기록 에 위치 하고 효과 적 인 기록 으로 탐색 해 야 데 이 터 를 얻 을 수 있다 는 것 이다.
isValid()를 통 해 현재 잘못된 기록 에 있 는 지 여 부 를 판단 할 수 있 습 니 다.
또한 next(),prev(),first(),last(),seek()등 방법 역시 불 반환 값 이 있 으 며,항로 기록 이 잘못 되 었 을 때 False 로 돌아 가 반환 값 을 통 해 경계 값 을 초과 한 조회 여 부 를 보조 적 으로 판단 할 수 있다.
QtTableView 와 데이터 바 인 딩
데이터 모델 생 성

self.model = QtSql.QSqlTableModel(self)
self.model.setTable('user')
self.model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange)
self.model.select()
setTable()은 현재 model 과 연 결 된 시 계 를 지정 합 니 다.
setEditStrategy()는 수정 모델 을 설정 하 는 것 입 니 다.그 매개 변 수 는 매 거 진 것 으로 모두 3 개의 값 이 있다.
  • OnFieldChange:모델 의 모든 것 이 데이터베이스 에 즉시 업 데 이 트 됩 니 다.
  • OnRowChange:사용자 가 다른 줄 을 선택 할 때 줄(변 경 된 줄)에 대한 변경 사항 을 적용 합 니 다.
  • OnManual Submit:모든 변경 사항 은 submitAll()또는 revertAll()이 호출 될 때 까지 모델 에 캐 시 됩 니 다.
  • select()는 연 결 된 표 에서 데 이 터 를 가 져 옵 니 다.기본 값 은 모든 데 이 터 를 가 져 옵 니 다.
    관련 QtTableView
    
    self.tableView.setModel(self.model)
    위 에서 만 든 model 을 tableView 에 설정 하면 tableView 에 표 의 데 이 터 를 보 여 줍 니 다.
    표 시 된 열 이름 은 기본적으로 데이터베이스 에 있 는 표 의 목록 입 니 다.아래 코드 를 통 해 열 이름 을 사용자 정의 할 수 있 습 니 다.
    
    self.model.setHeaderData(0, QtCore.Qt.Horizontal, 'ID')
    
    
    QSqlTableModel 을 사용 하면 모든 열 을 되 돌려 줍 니 다.보 여주 기 싫 은 열 이 있 으 면 아래 코드 를 통 해 열 을 숨 길 수 있 습 니 다.
    
    self.tableView.setColumnHidden(3, True)
    PyQt 에서 QtSql 을 사용 하여 MySql 데이터 베 이 스 를 연결 하 는 방법 에 관 한 글 은 여기까지 입 니 다.  QtSql 연결 MySql 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보시 기 바 랍 니 다.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기